1 #ifndef VTEC_COMPARISON_TESTS_VTEC_OPENCV_HEADER 2 #define VTEC_COMPARISON_TESTS_VTEC_OPENCV_HEADER 4 #include <vtec_core/image.h> 5 #include <vtec_core/types.h> 6 #include <homography_optimizer/types.h> 7 #include <opencv2/opencv.hpp> 17 void cv2vtecImg(
const cv::Mat& image, VTEC::Image& vtec_img)
20 image.convertTo(img_copy, CV_8U);
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)
25 vtec_img.I->data[i] = img_copy.data[i];
35 void vtec2cvImg(
const VTEC::Image& vtec_img, cv::Mat& image)
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;
40 float* data = (
float*)image.data;
41 for (
size_t i = 0; i < img_size; ++i)
43 data[i] = (float)vtec_img.I->data[i] / 255.0;
55 cv_h.create(3, 3, CV_64F);
56 for (
int i = 0; i < 3; i++)
58 for (
int j = 0; j < 3; j++)
60 cv_h.at<
double>(j, i) = vtec_h[i + 3 * j];
73 for (
int i = 0; i < 3; i++)
75 for (
int j = 0; j < 3; j++)
77 vtec_h[i + 3 * j] = cv_h.at<
double>(j, i);
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;
void warpPoints(cv::Point &p, cv::Mat H)
Warp a point using an homography matrix.
void cv2vtecHomography(const cv::Mat &cv_h, VTEC::Homography &vtec_h)
Converts opencv matrix to vtec homography.
void cv2vtecImg(const cv::Mat &image, VTEC::Image &vtec_img)
Converts a opencv image to vtec format.
void vtec2cvImg(const VTEC::Image &vtec_img, cv::Mat &image)
Converts vtec image to opencv format.
void vtec2cvHomography(const VTEC::Homography &vtec_h, cv::Mat &cv_h)
Converts vtec homography to opencv matrix.