vtec_opencv.h
Go to the documentation of this file.
1 #ifndef VTEC_COMPARISON_TESTS_VTEC_OPENCV_HEADER
2 #define VTEC_COMPARISON_TESTS_VTEC_OPENCV_HEADER
3 
4 #include <vtec_core/image.h>
5 #include <vtec_core/types.h>
6 #include <homography_optimizer/types.h>
7 #include <opencv2/opencv.hpp>
8 
9 namespace VTEC
10 {
17 void cv2vtecImg(const cv::Mat& image, VTEC::Image& vtec_img)
18 {
19  cv::Mat img_copy;
20  image.convertTo(img_copy, CV_8U); // ALWAYS DEEP COPY TO KEEP REF IMAGE
21  vtec_img.resize(image.cols, image.rows);
22  size_t img_size = vtec_img.size();
23  for (size_t i = 0; i < img_size; ++i)
24  {
25  vtec_img.I->data[i] = img_copy.data[i];
26  }
27 }
28 
35 void vtec2cvImg(const VTEC::Image& vtec_img, cv::Mat& image)
36 {
37  image.create(vtec_img.I->rows, vtec_img.I->cols, CV_32F);
38  size_t img_size = vtec_img.I->rows * vtec_img.I->cols;
39 
40  float* data = (float*)image.data;
41  for (size_t i = 0; i < img_size; ++i)
42  {
43  data[i] = (float)vtec_img.I->data[i] / 255.0;
44  }
45 }
46 
53 void vtec2cvHomography(const VTEC::Homography& vtec_h, cv::Mat& cv_h)
54 {
55  cv_h.create(3, 3, CV_64F);
56  for (int i = 0; i < 3; i++)
57  {
58  for (int j = 0; j < 3; j++)
59  {
60  cv_h.at<double>(j, i) = vtec_h[i + 3 * j];
61  }
62  }
63 }
64 
71 void cv2vtecHomography(const cv::Mat& cv_h, VTEC::Homography& vtec_h)
72 {
73  for (int i = 0; i < 3; i++)
74  {
75  for (int j = 0; j < 3; j++)
76  {
77  vtec_h[i + 3 * j] = cv_h.at<double>(j, i);
78  }
79  }
80 }
81 
88 void warpPoints(cv::Point2f& p, cv::Mat H)
89 {
90  double w = p.x * H.at<double>(2, 0) + p.y * H.at<double>(2, 1) + H.at<double>(2, 2);
91  double u2 = (p.x * H.at<double>(0, 0) + p.y * H.at<double>(0, 1) + H.at<double>(0, 2)) / w;
92  double v2 = (p.x * H.at<double>(1, 0) + p.y * H.at<double>(1, 1) + H.at<double>(1, 2)) / w;
93  p.x = u2;
94  p.y = v2;
95 }
96 
97 } /* namespace VTEC */
98 
99 #endif /* VTEC_COMPARISON_TESTS_VTEC_OPENCV_HEADER */
void warpPoints(cv::Point &p, cv::Mat H)
Warp a point using an homography matrix.
Definition: draw.h:11
void cv2vtecHomography(const cv::Mat &cv_h, VTEC::Homography &vtec_h)
Converts opencv matrix to vtec homography.
Definition: vtec_opencv.h:71
void cv2vtecImg(const cv::Mat &image, VTEC::Image &vtec_img)
Converts a opencv image to vtec format.
Definition: vtec_opencv.h:17
void vtec2cvImg(const VTEC::Image &vtec_img, cv::Mat &image)
Converts vtec image to opencv format.
Definition: vtec_opencv.h:35
Definition: draw.h:3
void vtec2cvHomography(const VTEC::Homography &vtec_h, cv::Mat &cv_h)
Converts vtec homography to opencv matrix.
Definition: vtec_opencv.h:53


cv_wrapper
Author(s):
autogenerated on Sun Dec 16 2018 03:14:36