我希望在iPhone上捕获视频,并在识别快速运动时启动捕获,并在检测到慢动作或没有运动时停止。
下面是一个用例来说明:
- 如果有人拿着iPhone相机,没有背景运动,但他的手不稳定,慢慢地向左/向右/向上/向下移动,这个动作应该被认为是缓慢的。
- 如果有人快速跑进相机视野,这将被认为是快速移动的记录。
- 如果有人慢慢走进相机的视野,这将被认为是缓慢的,不应该被拾取。
我正在考虑OpenCV,并认为它可能过度使用他们的运动检测和光流算法。我正在考虑通过直接访问图像像素的轻量级方法,也许可以检查亮度/亮度级别的变化。
我只需要处理30-40%的视频帧区域的运动(例如屏幕的上半部分),也许可以拿起每一个其他像素来处理。轻量级算法的原因是它需要非常快<4ms,因为它将以高帧率处理传入的视频缓冲帧。
欣赏通过直接检查图像像素来替代图像处理/快速运动检测例程的任何想法。
-
密集光流如calcOpticalFlowFarneback
-
使用运动历史
2.1 updateMotionHistory(sil, mhi, timestamp, MHI_DURATION);
2.2 calcMotionGradient(mhi, mask, orient, MAX_TIME_DELTA, MIN_TIME_DELTA…
2.3 segmentMotion(mhi, segment, regions, timestamp, MAX_TIME_DELTA);
2.4 calcGlobalOrientation(orient_roi, mask_roi, mhi_roi,…)