Мой скрипт обнаруживает лицо и затем отслеживает его, используя алгоритм отслеживания корреляции dlib.
Я пытаюсь показать каждое отслеживаемое лицо в отдельном окне, используя cv2.imshow(track_index, face_img)
, где face_image
- это область интереса лица, обрезанного из кадра, снятого с видео, с использованием dlib.rectangle
координат.
Часть кода показана ниже:
#get the updated tracker position
pos = tracker.get_position()
pos = dlib.rectangle(
int(pos.left()),
int(pos.top()),
int(pos.right()),
int(pos.bottom()),
)
#draw a bounding box around the tracked face
cv2.rectangle(image, (pos.left(), pos.top()), (pos.right(), pos.bottom()),
(100, 200, 100))
#crop the face from the frame
face_img = image[pos.top():pos.bottom(),pos.left():pos.right()]
#refers to the number of the track created
track_index = "track no.{}".format(trc - i)
font = cv2.FONT_HERSHEY_TRIPLEX
cv2.putText(image, track_index, (pos.left(), pos.bottom() +12), font, 0.5, (255, 255, 0))
#show the tracked face
cv2.imshow(track_index, face_img)
Это прекрасно работает до тех пор, пока лицо не выйдет за границы или в первый раз не окажется наполовину за пределами одной из границ кадра.В этом случае программа останавливается и выдает ошибку размера.
Traceback (most recent call last):
File "/home/Developing space/facetrack/hog_detect_face_track.py", line 44, in <module>
cv2.imshow(track_index, face_img)
cv2.error: OpenCV(3.4.1) /io/opencv/modules/highgui/src/window.cpp:356: error: (-215) size.width>0 && size.height>0 in function imshow
Как я могу заставить ROI внутри границ кадра предотвратить эту ошибку?