c++ - 使用 openCV 查找图像轮廓

标签 c++ image image-processing opencv

因为我想跟踪物体的运动,所以我需要图像序列的轮廓。 有人知道怎么做这个吗? 剪影蒙版是一个二值图像,在运动发生的地方有非零像素

最佳答案

您可以使用背景减法 技术。这里有两种方法。

  1. 从当前帧中减去前一帧。只有两个帧中没有改变的像素才会为零。参见 cvSub , cvAbsDiff .
  2. 保持视频帧的运行平均值。查看函数 cvRunningAvgMotion Analysis and Object Tracking OpenCV 文档的一部分。对于每个新帧,从当前帧中减去运行平均值。完成后,使用当前帧更新运行平均值。

使用上述方法之一后,您可以使用 cvThreshold 对生成的差异图像进行分割或 cvAdaptiveThreshold .这将生成二值图像,理想情况下,图像静止时为 0,运动时为 1 或 255。

虽然您在问题中没有提到这一点,但您可以继续计算二值图像的轮廓。有 cvFindContours为此。

关于c++ - 使用 openCV 查找图像轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4756690/

相关文章:

c++ - OpenGL 问题 : cannot render geometry on screen

php - ffmpeg 视频中的随机图像,但按顺序排列

java - 如何在 for 循环中显示多个图像

python - 在Opencv Python中将RGB图像转换为YUV和YCbCr颜色空间图像

c++ - 为什么 std::declval 添加引用?

c++ - Windows 7 以编程方式登录

c++ - fmtlib : an API to return parts of the formatted number in result string?

reactjs - 如何使用 React 检查文件扩展名

android - 在 Android 操作系统中将 JPEG/PNG 图像转换为 TIFF 图像格式

matlab - 用于图像处理/计算机视觉的良好且兼容的网络摄像头?