1

Recently I have installed OpenCV and OpenPose for tracking the head of a 3d character created,rigged and animated in Blender 2.81 on Windows 10. When I use OpenCV I use this addon :

https://github.com/jkirsons/FacialMotionCapture

and when I use Open Pose,I have installed this addon :

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

What's the problem ? The problem is that the addon written for OpenCV works good,but the addon for Openpose doesn't. I have no python experience,but I have looked inside the addons codes to try to understand why.

Please check the relevant python code that's inside the OpenCV / Facial motion capture addon below :

# 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)

Now check the relevant python code that's inside the OpenPose addon below :

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

What I want to know is the reason why OpenCV is able to grab the video file that I use,instead the OpenPose addon is not able to do that. I suspect that the code of the OpenPose addon has been written for Linux,but I'm using Windows 10. For this reason I should change this line :

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

Infact in Windows 10 there isn't any kind of device like that. So,how should I change the code if I want that Windows 10 is able to detect the video file that the code written for OpenCV is able to detect ?

john_connor
  • 165
  • 2
  • 2
  • 15

0 Answers0