Я хочу развернуть модель машинного обучения, которая обнаруживает некоторые объекты в реальном времени. Я попытался имитировать некоторые демонстрации, в которых я использую cv2 для захвата камеры и размещения текста на изображении.
Вот как я обнаруживаю и помещаю текст на изображение.
class VideoCamera(object):
def __init__(self):
self.video = cv2.VideoCapture(0)
def __del__(self):
self.video.release()
def detect_au(self,img):
img = np.array(img)
img = img_to_array(img.astype('float')/255.0)
img = np.expand_dims(img, axis=0)
prob=list(model.predict(img)[0])
AUs = []
for i in range(len(prob)):
if prob[i] > 0.5:
AUs.append(AU_LIST[i])
AUs.sort(key = lambda x : int(x[2:]))
return AUs
def draw_result(self):
success, img = self.video.read()
img = cv2.flip(img, 1)
faces = face_engine.detectMultiScale(img,scaleFactor=1.1,minNeighbors=10)
i = 1
for (x,y,w,h) in faces:
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
img = cv2.putText(img,'Face #'+str(i),(x,y-20), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 0), 2)
face = cv2.resize(img[y:y+h, x:x+w],(96,96))
AUs = self.detect_au(face)
img = cv2.putText(img,'Face #'+str(i),(img.shape[0]+40*i,img.shape[1]-20),
cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 0), 2)
j = 0
for AU in AUs:
img = cv2.putText(img,AU,(x-100, y+40*j),
cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 0), 2)
j += 1
i += 1
ret, jpeg = cv2.imencode('.jpg', img)
return jpeg.tobytes()
затем я отвечаю кадру на / video_feed, все работает нормально
def gen(camera):
while True:
labels, frame = camera.draw_result()
yield labels, frame
@app.route('/')
def video_feed():
labels, frame = next(gen(VideoCamera()))
myresponse = {'labels':labels, 'frame':frame}
return jsonify(myresponse)
@app.route('/cur_camera')
def cur_camera():
return render_template('cur_camer.html')
где в шаблоне есть
<img id="bg" src="{{ url_for('video_feed') }}" width="800" height="540" >
Однако я не хочу отображать все метки в потоке изображения, я хочу отображать надписи на странице в виде текста, как это сделать?