16 #include <opencv2/calib3d/calib3d.hpp>
17 #include <opencv2/imgproc/imgproc.hpp>
24 const cv::Mat& Rvec,
const cv::Mat& Tvec,
float axis_size)
26 Mat objectPoints(4, 3, CV_32FC1);
27 objectPoints.at<
float>(0, 0) = 0;
28 objectPoints.at<
float>(0, 1) = 0;
29 objectPoints.at<
float>(0, 2) = 0;
30 objectPoints.at<
float>(1, 0) = axis_size;
31 objectPoints.at<
float>(1, 1) = 0;
32 objectPoints.at<
float>(1, 2) = 0;
33 objectPoints.at<
float>(2, 0) = 0;
34 objectPoints.at<
float>(2, 1) = axis_size;
35 objectPoints.at<
float>(2, 2) = 0;
36 objectPoints.at<
float>(3, 0) = 0;
37 objectPoints.at<
float>(3, 1) = 0;
38 objectPoints.at<
float>(3, 2) = axis_size;
40 std::vector<Point2f> imagePoints;
43 cv::line(Image, imagePoints[0], imagePoints[1], Scalar(0, 0, 255, 255), 1);
44 cv::line(Image, imagePoints[0], imagePoints[2], Scalar(0, 255, 0, 255), 1);
45 cv::line(Image, imagePoints[0], imagePoints[3], Scalar(255, 0, 0, 255), 1);
46 putText(Image,
"x", imagePoints[1], FONT_HERSHEY_SIMPLEX, 0.6, Scalar(0, 0, 255, 255), 2);
47 putText(Image,
"y", imagePoints[2], FONT_HERSHEY_SIMPLEX, 0.6, Scalar(0, 255, 0, 255), 2);
48 putText(Image,
"z", imagePoints[3], FONT_HERSHEY_SIMPLEX, 0.6, Scalar(255, 0, 0, 255), 2);
57 float size = m.
ssize * 0.6;
58 Mat objectPoints(4, 3, CV_32FC1);
59 objectPoints.at<
float>(0, 0) = 0;
60 objectPoints.at<
float>(0, 1) = 0;
61 objectPoints.at<
float>(0, 2) = 0;
62 objectPoints.at<
float>(1, 0) = size;
63 objectPoints.at<
float>(1, 1) = 0;
64 objectPoints.at<
float>(1, 2) = 0;
65 objectPoints.at<
float>(2, 0) = 0;
66 objectPoints.at<
float>(2, 1) = size;
67 objectPoints.at<
float>(2, 2) = 0;
68 objectPoints.at<
float>(3, 0) = 0;
69 objectPoints.at<
float>(3, 1) = 0;
70 objectPoints.at<
float>(3, 2) = size;
72 std::vector<Point2f> imagePoints;
75 cv::line(Image, imagePoints[0], imagePoints[1], Scalar(0, 0, 255, 255), lineSize);
76 cv::line(Image, imagePoints[0], imagePoints[2], Scalar(0, 255, 0, 255), lineSize);
77 cv::line(Image, imagePoints[0], imagePoints[3], Scalar(255, 0, 0, 255), lineSize);
78 putText(Image,
"x", imagePoints[1], FONT_HERSHEY_SIMPLEX, 0.6, Scalar(0, 0, 255, 255), 2);
79 putText(Image,
"y", imagePoints[2], FONT_HERSHEY_SIMPLEX, 0.6, Scalar(0, 255, 0, 255), 2);
80 putText(Image,
"z", imagePoints[3], FONT_HERSHEY_SIMPLEX, 0.6, Scalar(255, 0, 0, 255), 2);
89 int lineSize,
bool setYperpendicular)
91 Mat objectPoints(8, 3, CV_32FC1);
92 float halfSize = m.
ssize / 2.f;
94 if (setYperpendicular)
96 objectPoints.at<
float>(0, 0) = -halfSize;
97 objectPoints.at<
float>(0, 1) = 0;
98 objectPoints.at<
float>(0, 2) = -halfSize;
99 objectPoints.at<
float>(1, 0) = halfSize;
100 objectPoints.at<
float>(1, 1) = 0;
101 objectPoints.at<
float>(1, 2) = -halfSize;
102 objectPoints.at<
float>(2, 0) = halfSize;
103 objectPoints.at<
float>(2, 1) = 0;
104 objectPoints.at<
float>(2, 2) = halfSize;
105 objectPoints.at<
float>(3, 0) = -halfSize;
106 objectPoints.at<
float>(3, 1) = 0;
107 objectPoints.at<
float>(3, 2) = halfSize;
109 objectPoints.at<
float>(4, 0) = -halfSize;
110 objectPoints.at<
float>(4, 1) = m.
ssize;
111 objectPoints.at<
float>(4, 2) = -halfSize;
112 objectPoints.at<
float>(5, 0) = halfSize;
113 objectPoints.at<
float>(5, 1) = m.
ssize;
114 objectPoints.at<
float>(5, 2) = -halfSize;
115 objectPoints.at<
float>(6, 0) = halfSize;
116 objectPoints.at<
float>(6, 1) = m.
ssize;
117 objectPoints.at<
float>(6, 2) = halfSize;
118 objectPoints.at<
float>(7, 0) = -halfSize;
119 objectPoints.at<
float>(7, 1) = m.
ssize;
120 objectPoints.at<
float>(7, 2) = halfSize;
124 objectPoints.at<
float>(0, 0) = -halfSize;
125 objectPoints.at<
float>(0, 1) = -halfSize;
126 objectPoints.at<
float>(0, 2) = 0;
127 objectPoints.at<
float>(1, 0) = halfSize;
128 objectPoints.at<
float>(1, 1) = -halfSize;
129 objectPoints.at<
float>(1, 2) = 0;
130 objectPoints.at<
float>(2, 0) = halfSize;
131 objectPoints.at<
float>(2, 1) = halfSize;
132 objectPoints.at<
float>(2, 2) = 0;
133 objectPoints.at<
float>(3, 0) = -halfSize;
134 objectPoints.at<
float>(3, 1) = halfSize;
135 objectPoints.at<
float>(3, 2) = 0;
137 objectPoints.at<
float>(4, 0) = -halfSize;
138 objectPoints.at<
float>(4, 1) = -halfSize;
139 objectPoints.at<
float>(4, 2) = m.
ssize;
140 objectPoints.at<
float>(5, 0) = halfSize;
141 objectPoints.at<
float>(5, 1) = -halfSize;
142 objectPoints.at<
float>(5, 2) = m.
ssize;
143 objectPoints.at<
float>(6, 0) = halfSize;
144 objectPoints.at<
float>(6, 1) = halfSize;
145 objectPoints.at<
float>(6, 2) = m.
ssize;
146 objectPoints.at<
float>(7, 0) = -halfSize;
147 objectPoints.at<
float>(7, 1) = halfSize;
148 objectPoints.at<
float>(7, 2) = m.
ssize;
151 std::vector<Point2f> imagePoints;
154 for (
int i = 0; i < 4; i++)
155 cv::line(Image, imagePoints[i], imagePoints[(i + 1) % 4], Scalar(0, 0, 255, 255), lineSize);
157 for (
int i = 0; i < 4; i++)
158 cv::line(Image, imagePoints[i + 4], imagePoints[4 + (i + 1) % 4],
159 Scalar(0, 0, 255, 255), lineSize);
161 for (
int i = 0; i < 4; i++)
162 cv::line(Image, imagePoints[i], imagePoints[i + 4], Scalar(0, 0, 255, 255), lineSize);