6 #include <opencv2/calib3d.hpp>
10 bool useRectifiedParameters)
12 cv::Mat cameraMatrix(3, 4, CV_64FC1, 0.0);
13 cv::Mat distorsionCoeff(4, 1, CV_64FC1);
14 cv::Size size(cam_info.width, cam_info.height);
16 if (useRectifiedParameters)
18 cameraMatrix.setTo(0);
19 cameraMatrix.at<
double>(0, 0) = cam_info.P[0];
20 cameraMatrix.at<
double>(0, 1) = cam_info.P[1];
21 cameraMatrix.at<
double>(0, 2) = cam_info.P[2];
22 cameraMatrix.at<
double>(0, 3) = cam_info.P[3];
23 cameraMatrix.at<
double>(1, 0) = cam_info.P[4];
24 cameraMatrix.at<
double>(1, 1) = cam_info.P[5];
25 cameraMatrix.at<
double>(1, 2) = cam_info.P[6];
26 cameraMatrix.at<
double>(1, 3) = cam_info.P[7];
27 cameraMatrix.at<
double>(2, 0) = cam_info.P[8];
28 cameraMatrix.at<
double>(2, 1) = cam_info.P[9];
29 cameraMatrix.at<
double>(2, 2) = cam_info.P[10];
30 cameraMatrix.at<
double>(2, 3) = cam_info.P[11];
32 for (
int i = 0; i < 4; ++i)
33 distorsionCoeff.at<
double>(i, 0) = 0;
37 cv::Mat cameraMatrixFromK(3, 3, CV_64FC1, 0.0);
38 for (
int i = 0; i < 9; ++i)
39 cameraMatrixFromK.at<
double>(i % 3, i - (i % 3) * 3) = cam_info.K[i];
40 cameraMatrixFromK.copyTo(cameraMatrix(cv::Rect(0, 0, 3, 3)));
43 if (cam_info.D.size() == 4)
45 for (
int i = 0; i < 4; ++i)
46 distorsionCoeff.at<
double>(i, 0) = cam_info.D[i];
50 ROS_WARN(
"length of camera_info D vector is not 4, assuming zero distortion...");
51 for (
int i = 0; i < 4; ++i)
52 distorsionCoeff.at<
double>(i, 0) = 0;
73 cv::Mat rot(3, 3, CV_64FC1);
75 marker.
Rvec.convertTo(Rvec64, CV_64FC1);
76 cv::Rodrigues(Rvec64, rot);
78 marker.
Tvec.convertTo(tran64, CV_64FC1);
80 tf2::Matrix3x3 tf_rot(rot.at<
double>(0, 0), rot.at<
double>(0, 1), rot.at<
double>(0, 2), rot.at<
double>(1, 0),
81 rot.at<
double>(1, 1), rot.at<
double>(1, 2), rot.at<
double>(2, 0), rot.at<
double>(2, 1),
82 rot.at<
double>(2, 2));
84 tf2::Vector3 tf_orig(tran64.at<
double>(0, 0), tran64.at<
double>(1, 0), tran64.at<
double>(2, 0));
92 std::vector<aruco::Marker>
markers;
95 if (normalize_ilumination)
97 ROS_WARN(
"normalizeImageIllumination is unimplemented!");
119 ROS_ERROR(
"cv_bridge exception: %s", e.what());
127 visualization_msgs::Marker visMarker;
128 visMarker.header = pose.header;
129 visMarker.id = marker_id;
130 visMarker.type = visualization_msgs::Marker::CUBE;
131 visMarker.action = visualization_msgs::Marker::ADD;
132 visMarker.pose = pose.pose;
135 visMarker.scale.z = 0.001;
136 visMarker.color.r = 1.0;
137 visMarker.color.g = 0;
138 visMarker.color.b = 0;
139 visMarker.color.a = 1.0;