opencv寻找两张图片不同点
时间: 2023-07-07 08:32:00 浏览: 250
在OpenCV中,可以使用cv::absdiff()函数来找到两张图片的不同点。下面是一个简单的例子:
```
cv::Mat img1 = cv::imread("image1.png");
cv::Mat img2 = cv::imread("image2.png");
cv::Mat diff;
cv::absdiff(img1, img2, diff);
cv::Mat grayDiff;
cv::cvtColor(diff, grayDiff, cv::COLOR_BGR2GRAY);
cv::Mat mask = grayDiff > 0;
cv::Mat result = cv::Mat::zeros(img1.size(), img1.type());
img1.copyTo(result, mask);
cv::imshow("result", result);
cv::waitKey(0);
```
这个例子中,我们首先读入两张图片img1和img2,然后使用cv::absdiff()函数计算它们的差异。接着,我们将结果转换为灰度图像,并使用一个阈值创建一个掩码。最后,我们将掩码应用到原始图像中,只显示不同的部分。
请注意,这种方法只能找到两个图像之间的差异,而不能找到特定对象的移动或形状变化。如果你需要更高级的图像比较和对象跟踪功能,可以考虑使用OpenCV中的其他函数或第三方库。
相关问题
opencv4.6中的stitcher函数可以拼接大小不一的两张图片吗
是的,OpenCV4.6中的stitcher函数可以拼接大小不一的两张图片。该函数利用SIFT算法来寻找图像间的关键点,然后通过RANSAC算法计算出变换矩阵,最后将图像进行拼接。因为SIFT算法具有旋转、尺度不变性,因此能够有效地处理大小不同的图像。
阅读全文