我正在使用OpenCV的函数findHomography
和RANSAC方法,以便找到与一组关键点链接的两个图像相关的单应性。主要问题是我无法找到函数输出的掩码矩阵的值。只有我知道的信息是0值是异常值,非零值是内点。但这意味着内部值是多少?有人知道吗?
提前致谢!
我称之为findHomography
的代码:
cv::Mat H12;
cv::Mat mask;
H12 = cv::findHomography(FvPointsIm1, FvPointsIm2, mask, CV_RANSAC, 5);
ui->Debug_Label->setText(Mat2QString(mask));
答案 0 :(得分:11)
findHomography
返回的掩码是一个8位单通道cv::Mat
(或std::vector<uchar>
,如果您愿意),包含0
或{{1} }表示异常状态。
编辑:您可以通过调用1
来访问掩码的每个元素,这会导致混乱的输出。您应该使用.at<double>
,它将正确解释矩阵值。
答案 1 :(得分:1)
在应用关键点匹配之后,我使用了 findHomography 方法。
然后,您可以使用掩码输出从所有匹配项中提取正确匹配项的子集。
Python 3.6和OpenCV 3.4.1中有一个示例:
good_kp = [gray_kp[m.queryIdx].pt for m in good_matches]
correct_matched_kp = [good_kp[i] for i in range(len(good_kp)) if mask[i]]