find homography in openFrameworks
#pragma once
#include "ofxCv.h"
class Homography {
public:
ofMatrix4x4 getHomography(cv::vector<cv::Point2f> cvSrcPos, cv::vector<cv::Point2f> cvDstPos) {
ofMatrix4x4 homographyMat;
cv::Mat homography = cv::findHomography(cvSrcPos, cvDstPos);
homographyMat.getPtr()[0] = homography.at<double>(0, 0);
homographyMat.getPtr()[4] = homography.at<double>(0, 1);
homographyMat.getPtr()[12] = homography.at<double>(0, 2);
homographyMat.getPtr()[1] = homography.at<double>(1, 0);
homographyMat.getPtr()[5] = homography.at<double>(1, 1);
homographyMat.getPtr()[13] = homography.at<double>(1, 2);
homographyMat.getPtr()[3] = homography.at<double>(2, 0);
homographyMat.getPtr()[7] = homography.at<double>(2, 1);
homographyMat.getPtr()[15] = homography.at<double>(2, 2);
return homographyMat;
}
ofMatrix4x4 getHomography(vector<ofVec2f> srcPos, vector<ofVec2f> dstPos) {
cv::vector<cv::Point2f> cvSrcPos, cvDstPos;
for (auto p : srcPos) {
cvSrcPos.push_back(cv::Point2f(p.x, p.y));
}
for (auto p : dstPos) {
cvDstPos.push_back(cv::Point2f(p.x, p.y));
}
return getHomography(cvSrcPos, cvDstPos);
}
};