Openpose addon для Blender на Windows: как python может обнаружить видеофайл? - PullRequest
1 голос
/ 16 февраля 2020

Недавно я установил OpenCV и OpenPose для отслеживания головы трехмерного персонажа, созданного, сфальсифицированного и анимированного в Blender 2.81 на Windows 10. Когда я использую OpenCV, я использую это дополнение:

https://github.com/jkirsons/FacialMotionCapture

и когда я использую Open Pose, я установил это дополнение:

https://gitlab.com/sat-metalab/blender-addon-openpose

В чем проблема? Проблема в том, что аддон, написанный для OpenCV, работает хорошо, а аддон для Openpose - нет. У меня нет python опыта, но я заглянул внутрь кодов аддонов, чтобы попытаться понять, почему.

Пожалуйста, проверьте соответствующий код python, который находится внутри аддона захвата движений OpenCV / Facial ниже:

# Show camera image in a window                     
            cv2.imshow("Output", image)

 # Show camera image in a window                     
            cv2.imshow("Output", image)
            cv2.waitKey(1)

        return {'PASS_THROUGH'}

    def init_camera(self):
        if self._cap == None:
            self._cap = cv2.VideoCapture(0)
            self._cap.set(cv2.CAP_PROP_FRAME_WIDTH, self.width)
            self._cap.set(cv2.CAP_PROP_FRAME_HEIGHT, self.height)
            self._cap.set(cv2.CAP_PROP_BUFFERSIZE, 1)
            time.sleep(1.0)

Теперь проверьте соответствующий python код, который находится внутри дополнения OpenPose ниже:

class Camera:
    """
    Utility class embedding a camera, its parameters and buffers
    """
    def __init__(self,
                 path: str) -> None:
        self._path = path
        self._camera = cv2.VideoCapture()
        self._camera.open(path)
        self._shape: Tuple[int, int, int] = (0, 0, 0)
        self._bbox = [180, 120, 270, 270]
        self._bbox_new = self._bbox

class OpenPoseWrapper:
    def __init__(self) -> None:
        self._cameras: List[Camera] = []
        self._image_buffer: Optional[bpy.types.Image] = None
        self._camera_paths: List[str] = ['/dev/video0', '/dev/video1']
        self._is_stereo = False
        self._is_stereo_calibrated = False

То, что я хочу знать, это причина, по которой OpenCV может захватывать видеофайл, который я использую вместо этого аддон OpenPose не может этого сделать. Я подозреваю, что код дополнения OpenPose был написан для Linux, но я использую Windows 10. По этой причине я должен изменить эту строку:

self._camera_paths: List[str] = ['/dev/video0', '/dev/video1']

Infact in Windows 10 Нет такого устройства, как это. Итак, как мне изменить код, если я хочу, чтобы Windows 10 мог обнаруживать видеофайл, который может обнаружить код, написанный для OpenCV?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...