0

嗨,我找到了这段代码来比较图像

cv::Mat img1 = ...
cv::Mat img2 = ...
cv::Mat result = ...

int threshold = (double)(img1.rows * img1.cols) * 0.7; 

cv::compare(img1 , img2  , result , cv::CMP_EQ );
int similarPixels  = countNonZero(result);

if ( similarPixels  > threshold ) {
   cout << "similar" << endl;
}

但由于我是 OPENCV 的新手,我不知道“cv::Mat img1=...”的值是什么,请帮助我并尝试使用图像路径作为值的代码,但它给出了一个错误

4

2 回答 2

0
void compare(const MatND& src1, const MatND& src2, MatND& dst, int cmpop)

比较函数需要 4 个参数,这是;

•src1 – The first source array
•src2 – The second source array; must have the same size and same type as src1
•value – The scalar value to compare each array element with
•dst – The destination array; will have the same size as src1 and type= CV_8UC1

据我了解,这张图片有一些fiducial points类似的坐标系(X / Y )

如 ;

1 45 123
2 56 164
3 64 147

并将这些点存储在数组中,然后将数组发送到比较函数以查找匹配器。

如果您想使用图像比较,我的建议是您可以搜索feret database可免费用于研究的内容。

于 2013-09-03T08:35:37.307 回答
0

您可以使用imread将图像加载到cv::Mat img1,例如

cv::Mat img1 = imread("c:\\test.bmp");    // To load an RGB image
于 2013-09-03T08:42:05.007 回答