我正在将向量更改为Mat,因为出于某种原因,如果采用向量,findHomography()仅生成零矩阵。
所以以下是简短的代码。
{
std::vector<Point2f> img1;
std::vector<Point2f> img2;
Mat mat_from_img1 = Mat(img1,true);
Mat mat_from_img2 = Mat(img2,true);
Mat H = cv::findHomography(mat_from_img1,mat_from_img2, CV_RANSAC);
//Do THINGS
}//as soons as getting out of this scope,
//it calls ~MAT() then Mat::release and causes memory reading violation error.
如何正确地将矢量转换为mat以避免错误? 我试过了
Mat mat_from_img1 = Mat(img1,true);任
答案 0 :(得分:0)
您无需将这些向量转换为Mats。您可以将它们直接传递给cv::findHomography() - 它需要InputArray
和InputArray can be a std::vector。
请参阅示例 http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html
检查img1和img2中的内容 - 根据您的代码,它们是空的!