2012-07-14 47 views
2

检测显著不同图像I具有仍然捕获一晚的由一个摄像头的过程中的图像。大部分是相同的,因为图像中的照明是均匀的。然而,其中一些与其余的显着不同 - 它们在框架中具有可见的人体运动。从一组,如与OpenCV的或SimpleCV

我该如何检测哪些图像明显不同,这样运动会包含在它们中?更好的是,有没有一种方法专门检测运动

我猜,像OpenCV的或SimpleCV库可以很容易地做到这一点,但我不限于使用那些人。

回答

6

在SimpleCV,

cam = Camera() 
prev = cam.getImage() 
while True: 
    current = cam.getImage() 
    fs = current.findMotion(prev, method="LK") 
    if fs: #if there's motion 
     print "motion found" 
    prev = current 

Image.findMotion()使用光流来检测运动。你可以很容易地使用它。增加一些关于你期望有多少动作的条件。

fs.dxfs.dy会给你所有检测到运动的点。

我已在其中我从照相机和通过检测水平和垂直运动的输入的例子中,I控制Banshee媒体播放器。你可以在我的GitHub上找到它。

1

如果你有第一个图像是相似类型的,你会发现从第一个所有图像的绝对差异,并有阈值的发现是显著不同的图像。 同样在OpenCV的,用于检测视频中的运动,这样的事情是可以做到: http://sundararajana.blogspot.in/2007/05/motion-detection-using-opencv.html

+0

感谢您的回答。你有没有机会找到代码样本来找出两幅图像之间的绝对差异?谢谢! – 2012-07-14 06:29:33

+0

在openCV中,您必须首先为图像声明2个矩阵,将图像转换为灰度,然后您可以使用'absdiff()'函数。您可以查看http://www.developerstation.org/2011/03/frame-differencing-using-opencv-in-c.html中相同的示例。 – Rndm 2012-07-14 06:32:53