Данные изображения не могут быть преобразованы в ошибку с плавающей запятой?
Я пытаюсь определить лицо и вернуть изображение соответствующих ориентиров после выравнивания лица. это мой код:
def getIthFrame(self, i):
img = self.data.get_data(i)
raw_img = Image.fromarray(img)
w, h = raw_img.size
if self.pos == "center":
img, landmarks = self.detectLandmarks(raw_img)
elif self.pos == "left":
img, landmarks = self.detectLandmarks(raw_img.crop(box=(0,0, w//2, h)))
elif self.pos == "right":
img, landmarks = self.detectLandmarks(raw_img.crop(box=(w//2,0, w, h)))
elif self.pos == "90": # face oriented to right
img, landmarks = self.detectLandmarks(raw_img.rotate(90)) # rotate anticlockwise 90
elif self.pos == "180": # face oriented to down
img, landmarks = self.detectLandmarks(raw_img.rotate(180))
elif self.pos == "270": # face oriented to left
img, landmarks = self.detectLandmarks(raw_img.rotate(270))
if landmarks is None: return None, None # landmark detection fail
img, landmarks = normalize(img, landmarks)
return img, landmarks
def showImgLandmarks(self, img, landmarks=None, ax=None):
"""
visualize i-th frame with landmarks
"""
if ax is None:
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.imshow(img)
if landmarks is not None:
ax.scatter(landmarks[:,0], landmarks[...,1])
for i in range(landmarks.shape[0]):
ax.text(landmarks[i,0], landmarks[i,1], i)
plt.show()
face_detector = dlib.get_frontal_face_detector()
landmark_detector = dlib.shape_predictor('./shape_predictor_68_face_landmarks.dat')
extractor = FrameExtract(face_detector, landmark_detector)
extractor.showImgLandmarks(*extractor.getIthFrame(0))
Однако, когда я пытаюсь просмотреть изображения в моем наборе данных, я получаю ошибку TypeError: данные изображения объекта dtype не могут быть преобразованы в float. В строке появляется следующее сообщение об ошибке:
extractor.showImgLandmarks(*extractor.getIthFrame(0))
1 ответ
Я хочу извлечь из видео верхний и нейтральный кадры. (Мои входные данные - это видео).
video_path = './videos/mmi-facial-expression-database_download_2019-05 13_03_06_41/Sessions/2/S001-002.avi'
video_ID = 1
save_path = './onset_apex_pairs/0002'