在安霸平台上实现运动侦测的功能
来源:互联网 发布:mac rar暴力破解 编辑:程序博客网 时间:2024/04/30 20:13
实现运动侦测功能实际上就是采用帧间差分的方法来判断相邻两帧或多帧差异是否大于某个事先设定的值,如果是就认为有运动行为发生。本人经过多次实验,发现采用连续两帧的差分,误差比较大,稳定性不是很好,容易误判。而采用3帧差分的算法则效果比较好,借鉴OPENCV的方法,成功在安霸A2S70平台上实现运动侦测的功能。现记录如下:
int MotionDetect(IplImage *img)
{
int i, idx1 = last, idx2;
CvSize size = cvSize(img->width,img->height);
FILE *p_file;
char p_file_name[50], pUniName[50];
static int sFileNum = 0;
printk("MotionDetect../n");
if( motion_buf == 0 )
{
motion_buf = (IplImage**)malloc(N*sizeof(motion_buf[0]));
memset( motion_buf, 0, N*sizeof(motion_buf[0]));
for( i = 0; i < N; i++ )
{
cvReleaseImage( &motion_buf[i] );
motion_buf[i] = cvCreateImage( size, IPL_DEPTH_8U, 1 );
cvZero( motion_buf[i] );
}
}
cvCopy( img, motion_buf[last], 0 );
idx2 = (last + 1) % N; // index of (last - (N-1))th frame
last = idx2;
silh = motion_buf[idx2];
cvAbsDiff( motion_buf[idx1], motion_buf[idx2], silh ); // get difference between frames
cvThreshold( silh, silh, 30, 255.0, CV_THRESH_BINARY ); // and threshold it
if(!FindROIArea( silh,20))return 0;
return 1;
}
连续帧数据的获取是通过中断的方式,抓取YUV buffer里的Y分量数据,即Y的RAW DATA,实验表明,采取这种方式,计算量小,效果非常的不错。可惜就是必须要背景要是相对固定的,如果背景前景都在运动,那可能就要用复杂的背景建模算法了,下次有空准备尝试实验下。
不管怎样,常规的运动侦测已经实现了,客户已经非常满意我的这个功能了!
- 在安霸平台上实现运动侦测的功能
- 在安霸A2S70平台上用纯软件实现面部识别功能
- 安卓在定义的view中实现手势识别上,下,左,右的功能
- 自动开关机功能在安卓手机上实现
- 采用LBP算法在安霸A2S70平台上实现身份识别
- cocos2d实现精灵在屏幕上随机的运动
- 展讯的8825平台 在TP上实现距离传感器的功能
- 2. Orac在windows平台上的安与设置
- [转载]普通运动控制卡在LabVIEW平台上的应用
- Android Animation实现元素在屏幕上按照指定轨迹运动,以及出现NullPointerException的解决方案
- 游戏编程基础之(一):实现物体在窗口上的往返运动
- 侦测隐藏进程的强文[上]
- Linux 平台上getopt函数在Windos平台上的的实现算法
- 图像基础22 运动侦测
- 如何在微信公众平台上实现支付功能/微信支付
- 在windows平台上使用Qt和libmodbus库实现modbus主机功能
- 用OC和UI实现购物车功能 在iOS平台上
- Java Web应用在ARM Linux平台上的实现
- 一些百度答案
- 汇编常用知识整理
- 明明两个数据看的一样,但比较的结果就是不相等 (内存对齐,debug没问题,release 有问题)
- myeclipse中console(控制台)显示不完全
- 类成员的可见性
- 在安霸平台上实现运动侦测的功能
- Linux下的mkdir函数
- 详解C#中利用ODP实现瞬间导入百万级数据
- iPhone 开发过程中的一些小技术
- 收藏
- 我的网恋故事下
- 101个LINQ例子
- JAVA 位操作
- HDU3646Fate Stay Night动态规划DP题解