| | |
| | |
| | |
| | |
| |
|
| | |
| | #include <opencv2/opencv.hpp> |
| | |
| | #define OPENPOSE_FLAGS_DISABLE_POSE |
| | #include <openpose/flags.hpp> |
| | |
| | #include <openpose/headers.hpp> |
| |
|
| | |
| | DEFINE_int32(mode, 1, "Select 1 for intrinsic camera parameter calibration, 2 for extrinsic calibration."); |
| | DEFINE_string(calibration_image_dir, "images/intrinsics/", "Directory where the images for camera parameter calibration are placed."); |
| | DEFINE_double(grid_square_size_mm, 127.0, "Chessboard square length (in millimeters)."); |
| | DEFINE_string(grid_number_inner_corners,"9x6", "Number of inner corners in width and height, i.e., number of total squares in width" |
| | " and height minus 1."); |
| | |
| | DEFINE_string(camera_serial_number, "18079958", "Camera serial number."); |
| | |
| | DEFINE_bool(omit_distortion, false, "Set to true if image views are already undistorted (e.g., if recorded from OpenPose" |
| | " after intrinsic parameter calibration)."); |
| | DEFINE_bool(combine_cam0_extrinsics, false, "Set to true if cam0 extrinsics are not [R=I, t=0]. I will make no effect if cam0 is" |
| | " already the origin. See doc/advanced/calibration_module.md for an example."); |
| | DEFINE_int32(cam0, 1, "Baseline camera for extrinsic calibration, cam1 will be calibrated assuming cam0 the" |
| | " world coordinate origin."); |
| | DEFINE_int32(cam1, 0, "Target camera to estimate its extrinsic parameters, it will be calibrated assuming cam0" |
| | " as the world coordinate origin."); |
| | |
| | DEFINE_int32(number_cameras, 4, "Number of cameras (for mode 3-4)."); |
| | |
| | DEFINE_string(camera_parameter_folder, "models/cameraParameters/flir/", "String with the folder where the camera parameters are or will be" |
| | " located."); |
| |
|
| | int openPoseDemo() |
| | { |
| | try |
| | { |
| | op::opLog("Starting OpenPose calibration toolbox...", op::Priority::High); |
| | const auto opTimer = op::getTimerInit(); |
| |
|
| | |
| | op::checkBool( |
| | 0 <= FLAGS_logging_level && FLAGS_logging_level <= 255, "Wrong logging_level value.", |
| | __LINE__, __FUNCTION__, __FILE__); |
| | op::ConfigureLog::setPriorityThreshold((op::Priority)FLAGS_logging_level); |
| |
|
| | |
| | const auto gridInnerCorners = op::flagsToPoint(op::String(FLAGS_grid_number_inner_corners), "12x7"); |
| | const auto calibrationImageDir = op::formatAsDirectory(FLAGS_calibration_image_dir); |
| | const auto gridSqureSizeMm = (float)FLAGS_grid_square_size_mm; |
| |
|
| | |
| | if (FLAGS_mode == 1) |
| | { |
| | op::opLog("Running calibration (intrinsic parameters)...", op::Priority::High); |
| | |
| | |
| | const auto flags = cv::CALIB_RATIONAL_MODEL; |
| | |
| | |
| | |
| | const auto saveImagesWithCorners = true; |
| | |
| | op::estimateAndSaveIntrinsics( |
| | gridInnerCorners, gridSqureSizeMm, flags, |
| | op::formatAsDirectory(FLAGS_camera_parameter_folder), calibrationImageDir, FLAGS_camera_serial_number, |
| | saveImagesWithCorners); |
| | op::opLog("Intrinsic calibration completed!", op::Priority::High); |
| | } |
| |
|
| | |
| | else if (FLAGS_mode == 2) |
| | { |
| | op::opLog("Running calibration (extrinsic parameters)...", op::Priority::High); |
| | |
| | op::estimateAndSaveExtrinsics( |
| | FLAGS_camera_parameter_folder, calibrationImageDir, gridInnerCorners, gridSqureSizeMm, |
| | FLAGS_cam0, FLAGS_cam1, FLAGS_omit_distortion, FLAGS_combine_cam0_extrinsics); |
| | |
| | op::opLog("Extrinsic calibration completed!", op::Priority::High); |
| | } |
| |
|
| | |
| | else if (FLAGS_mode == 3) |
| | { |
| | op::opLog("Running calibration (bundle adjustment over extrinsic parameters)...", op::Priority::High); |
| | |
| | if (!FLAGS_omit_distortion) |
| | op::error("This mode assumes that the images are already undistorted (add flag `--omit_distortion`.", |
| | __LINE__, __FUNCTION__, __FILE__); |
| | |
| | const auto saveImagesWithCorners = false; |
| | |
| | op::refineAndSaveExtrinsics( |
| | FLAGS_camera_parameter_folder, calibrationImageDir, gridInnerCorners, gridSqureSizeMm, |
| | FLAGS_number_cameras, FLAGS_omit_distortion, saveImagesWithCorners); |
| | |
| | op::opLog("Extrinsic calibration (bundle adjustment) completed!", op::Priority::High); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | else |
| | op::error("Unknown `--mode " + std::to_string(FLAGS_mode) + "`.", __LINE__, __FUNCTION__, __FILE__); |
| |
|
| | |
| | op::printTime( |
| | opTimer, "OpenPose calibration toolbox successfully finished. Total time: ", " seconds.", |
| | op::Priority::High); |
| |
|
| | return 0; |
| | } |
| | catch (const std::exception&) |
| | { |
| | return -1; |
| | } |
| | } |
| |
|
| | int main(int argc, char *argv[]) |
| | { |
| | |
| | gflags::ParseCommandLineFlags(&argc, &argv, true); |
| |
|
| | |
| | return openPoseDemo(); |
| | } |
| |
|