小编Val*_*qué的帖子

CV - 提取两个图像之间的差异

我目前正在研究基于视频监控的入侵系统.为了完成这个任务,我拍摄了我的场景背景的快照(假设它完全干净,没有人或移动物体).然后,我比较从(静态)摄像机获得的帧并寻找差异.我必须能够检查任何差异,不仅是人的形状或其他什么,所以我不能具体提取特征.

通常,我有:

http://postimg.org/image/dxtcp4u8h/

我正在使用OpenCV,所以要比较我基本上做的:

cv::Mat bg_frame;
cv::Mat cam_frame;
cv::Mat motion;

cv::absdiff(bg_frame, cam_frame, motion);
cv::threshold(motion, motion, 80, 255, cv::THRESH_BINARY);
cv::erode(motion, motion, cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3,3)));
Run Code Online (Sandbox Code Playgroud)

结果如下:

http://postimg.org/image/3kz0o62id/

正如你所看到的那样,手臂被剥离了(由于我猜的颜色差异冲突),这很遗憾不是我想要的.

我想添加使用cv::Canny()以检测边缘并填充手臂的缺失部分,但遗憾的是(再一次),它只解决了少数情况下的问题,而不是大多数情况.

我可以使用任何算法或技术来获得准确的差异报告吗?

PS:对不起图片.由于我的新订阅,我没有足够的声誉.

编辑 我在这里使用灰度图像,但我对任何解决方案都持开放态度.

opencv motion-detection difference

30
推荐指数
3
解决办法
6万
查看次数

标签 统计

difference ×1

motion-detection ×1

opencv ×1