Данные изображения не могут быть преобразованы в ошибку с плавающей запятой?

Я пытаюсь определить лицо и вернуть изображение соответствующих ориентиров после выравнивания лица. это мой код:

      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'
Другие вопросы по тегам