Недавно я установил 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?