2017-08-15 104 views
-2

我很新的C++,并已做了很多的研究,OPENCV。 我目前正在使用摄像头制作动作探测器,并尝试使用它来触发某种功能(有点像听众)。我的应用程序中不需要任何类型的视频视频。我只需要感应运动并给出一个输出,如布尔值。如何使用OpenCV的移动传感器(不找视频输出)

我更熟悉Java,但它在C++中,没有包装,没有转换器来编写。

能有人帮点我在写方向。也许有教程或建议我应该查找的东西。即使是我应该使用的不同的库,而不是openCV。

+0

如果我理解正确的,你想使用视频处理框架来检测运动,但没有视频? – eshirima

+0

是的。基本上我需要通过一个窗口来检测运动。我没有使用视频。我只需要触发我的设备在检测到运动时从睡眠模式进入唤醒模式。 –

+0

我不认为它可能实现你想要的。你需要某种形式的输入或传感器饲料的运行一些分析,以确定运动或不..如果你不希望使用视频,然后用某种[运动传感器](https://www.safewise.com/resources/motion-sensor-guide)。 – eshirima

回答

1

作为一个起点,我推荐使用基本的图像相减,然后从那里。

的基本算法是:

firstFrame = readFrame() 

firstFrameGrey = convertToGreyScale(firstFrame) // makes the image B&W 

while True 

    secondFrame = readFrame() 
    secondFrameGrey = convertToGreyScale(secondFrame) 

    difference = sub(firstFrameGrey, secondFrameGrey) 

    threshold() 

    // perform some morphological operations 
    erosion() 
    dilation() 

    findContours() 

// loop over contours and try filtering based off of area, perimeter etc. 
// This filtration will allow you to detect significant changes. 

// update frame 
firstFrameGrey = secondFrameGrey 

对于形态学操作,试验不同的值,看看什么样的结果你。在thresholding

This教程

更多信息说明如何执行的形态学操作。

轮廓信息可以与area API

的算法应该是自我解释和OpenCV拥有所有我命名方法一起找到here