c++ - OpenCV:获得两帧之间的精确差异,几乎没有变化

标签 c++ opencv ocr

根据这篇文章OCR & OpenCV: Difference between two frames on high resolution images ,我现在能够使用 OpenCV 正确检测视频的两帧之间的差异。

我现在正尝试使用不同的数据调整此算法。通常在下面的三张图片上,我只看到绿线作为差异,而根本看不到文本(这是最有趣的)。我正在努力更好地理解事情是如何运作的。

第一张图片:

TestImg1

第二张图片:

TestImg2

第三张图片: ResultImg

如您所见,我只有那些绿线而没有文本(在减少引用帖子的算法中的 countours[i].size() 时,我最多只能有一个字母)

原始PNG图像: 1st image 2nd image

最佳答案

如果您使用的是链接问题答案中的代码 - 这是意料之中的事情。回答者建议你去除噪声,找到轮廓并提取封闭轮廓的凸包中的区域。但是你的大部分差异,很小很细,在这种过滤之后都会被去除。

尝试对您的输入图像做一个简单的减法 - 它可能会更好。如果没有 - 在此处发布结果,我们将尝试改进它。

编辑:

这个简单的代码似乎可以完成这项工作:

#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;
}

结果: enter image description here

关于c++ - OpenCV:获得两帧之间的精确差异,几乎没有变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34352216/

相关文章:

c++ - FLD浮点指令加载常数

java - 索尼 IP 摄像机 opencv Java

c++ - 如何将 cvCvtColor 转换为 opencv 中的 cvtColor 调用(BGR 到 HSV)?

python - OpenCV:OCR 之前阴影图像的轮廓检测

opencv - 照片opencv中的字符分割

android - 使用 tess-two 库从 android 中的位图中提取数字

c++ - 使用 C++ 映射来计算词频。我究竟做错了什么?

c++ - 一个源文件更改导致在安装 Visual 2013 后在 Visual 2010 上重建完整项目

c++ - CMake工具链文件: Appropriate value of `CMAKE_SYSTEM_PROCESSOR` for embedded development

c++ - cv::remap segfaults with std::thread