| #include "frc971/vision/vision_util_lib.h" |
| |
| #include "glog/logging.h" |
| |
| namespace frc971::vision { |
| |
| std::optional<cv::Mat> CameraExtrinsics( |
| const frc971::vision::calibration::CameraCalibration *camera_calibration) { |
| CHECK(!camera_calibration->has_turret_extrinsics()) |
| << "Turret not currently supported"; |
| |
| if (!camera_calibration->has_fixed_extrinsics()) { |
| return std::nullopt; |
| } |
| CHECK(camera_calibration->fixed_extrinsics()->has_data()); |
| cv::Mat result(4, 4, CV_32F, |
| const_cast<void *>(static_cast<const void *>( |
| camera_calibration->fixed_extrinsics()->data()->data()))); |
| result.convertTo(result, CV_64F); |
| CHECK_EQ(result.total(), |
| camera_calibration->fixed_extrinsics()->data()->size()); |
| |
| return result; |
| } |
| |
| cv::Mat CameraIntrinsics( |
| const frc971::vision::calibration::CameraCalibration *camera_calibration) { |
| cv::Mat result(3, 3, CV_32F, |
| const_cast<void *>(static_cast<const void *>( |
| camera_calibration->intrinsics()->data()))); |
| result.convertTo(result, CV_64F); |
| CHECK_EQ(result.total(), camera_calibration->intrinsics()->size()); |
| |
| return result; |
| } |
| |
| cv::Mat CameraDistCoeffs( |
| const frc971::vision::calibration::CameraCalibration *camera_calibration) { |
| const cv::Mat result(5, 1, CV_32F, |
| const_cast<void *>(static_cast<const void *>( |
| camera_calibration->dist_coeffs()->data()))); |
| CHECK_EQ(result.total(), camera_calibration->dist_coeffs()->size()); |
| return result; |
| } |
| |
| } // namespace frc971::vision |