CMU-Perceptual-Computing-Lab / openpose

OpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation
https://cmu-perceptual-computing-lab.github.io/openpose
Other
30.68k stars 7.82k forks source link

Openpose 3D Extrinsic Parameter Calibration #779

Closed ag2020 closed 6 years ago

ag2020 commented 6 years ago

I had a question regarding how to calibrate the extrinsic parameters for 2 cameras (which will be used to get 3D keypoints). I am using two Logitech Cameras. When I run Step 2 in the calibration_module.md (link: https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/modules/calibration_module.md#step-2---extrinsic-parameter-calibration), without --flir_camera (since I am not using a Flir camera), only one of the cameras begins to record. I am able to specify which camera using --camera 0 or --camera 1, but it won't let me run both of them simultaneously, which to my understanding is required for 3D calibration. Does anybody know how to calibrate the cameras for 3D use? Thanks in advance.

ag2020 commented 6 years ago

Additionally, when I run the command

./build/examples/openpose/openpose.bin --3d --number_people_max 1,

it throws the error that only one camera was detected, but >1 cameras are needed.

However, when I separately run the commands

./build/examples/openpose/openpose.bin --camera 0 ./build/examples/openpose/openpose.bin --camera 1

it is able to find the separate cameras and record from there.

Does anybody know what might be the problem? Thanks in advance

ag2020 commented 6 years ago

Hi, I was able to solve the first problem by using a custom script that recorded both cameras at once, and then manually moving the pictures to the extrinsics directory. When I recalibrate, it is able to find and process the images, but throws the error: "Variables 'angles' is empty". Does anyone know what might be causing this? Thanks in advance.

ag2020 commented 6 years ago

UPDATE: I was able to fix the 'angles' problem by hard coding the angles vector in the C++ code, and the code calibrates successfully! However, I still run into the same problem when running

./build/examples/openpose/openpose.bin --3d --number_people_max 1,

which is that only 1 camera is detected, but >1 cameras are needed.

I am able to run ./build/examples/openpose/openpose.bin --3d --number_people_max 1 --camera 4, where it detects only the first camera. I am also able to run ./build/examples/openpose/openpose.bin --3d --number_people_max 1 --camera 5, where it detects only the second camera.

However, I am not able to find a way to let it know to find two cameras. Anyone have any ideas? Thanks in advance.

FYI: I am not using FLIR cameras, so I am not using the --flir_camera flag. Instead I am using 2 Logitech cameras.

whoknowsb commented 6 years ago

Hi @ag2020! I'm also struggling with your problem! Did you solve it? I'm working with 2 Logitech USB3 cameras.

whycn commented 6 years ago

I got the same problem. I also work with 2 Logitech USB cameras.

ravijo commented 5 years ago

Hi @ag2020, I am also getting Error: Variables 'angles' is empty error. I have opened a separate issue since this issue is half a year old.

Can you please explain the workaround?

mikelassi commented 5 years ago

Hi, I had a similar issue (using flir cameras, though). I didn't change the default number_inner_corners flags while using a 8x6 chessboard grid. For this reason, the program could not find the chessboard in the images. Setting the correct number in the flag solved the problem for me. Hope it helps!

ravijo commented 5 years ago

Thanks, @mikelassi for your suggestion. Though I have set grid_square_size_mm and grid_number_inner_corners, I still need to give it a try with the latest version of OpenPose. I haven't looked into it since the middle of February.

gineshidalgo99 commented 5 years ago

@ag2020 @riccardoballoch The 3D code is meant to be used ONLY WITH FLIR CAMERAS, as specified in the doc. Otherwise, create your own multi-camera reader and feed that output into OpenPose following the examples in examples/tutorial.

@ravijo About Error: Variables 'angles' is empty (also previously explained in #1082), the error has been updated to be more informative. This basically means no chessboard was detected on the images. Which most probably means you did not use the right value for --number_inner_corners, as indicated by mikelassi.