根据这篇文章OCR & OpenCV: Difference between two frames on high resolution images ,我现在能够使用 OpenCV 正确检测视频的两帧之间的差异。
我现在正尝试使用不同的数据调整此算法。通常在下面的三张图片上,我只看到绿线作为差异,而根本看不到文本(这是最有趣的)。我正在努力更好地理解事情是如何运作的。
第一张图片:
第二张图片:
如您所见,我只有那些绿线而没有文本(在减少引用帖子的算法中的 countours[i].size() 时,我最多只能有一个字母)
最佳答案
如果您使用的是链接问题答案中的代码 - 这是意料之中的事情。回答者建议你去除噪声,找到轮廓并提取封闭轮廓的凸包中的区域。但是你的大部分差异,很小很细,在这种过滤之后都会被去除。
尝试对您的输入图像做一个简单的减法 - 它可能会更好。如果没有 - 在此处发布结果,我们将尝试改进它。
编辑:
这个简单的代码似乎可以完成这项工作:
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat a = imread("a.jpg");
Mat b = imread("b.jpg");
Mat diff;
absdiff(a, b, diff);
imwrite("c.jpg", diff);
imshow("diff", diff);
waitKey();
return 0;
}
关于c++ - OpenCV:获得两帧之间的精确差异,几乎没有变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34352216/