您的位置:首页 > 运维架构 > Linux

Linux下移植motion到6410开发板(移动图像监测系统)

2012-09-22 20:15 471 查看
所谓移动图像监测,简单来说就是利用USB摄像头定点监测某个区域,平时摄像头并不拍照,只有当有移动物体经过时,摄像头便自动抓拍(要监测多大物体、按拍照速率都是可调的),并把拍到的图像存储在指定目录,实现无人监控功能。

我用的是6410开发板,nfs起动态根文件系统,飞凌提供的2.6.36.32内核,交叉编译工具4.3.2,在开始项目前一定要先确保你的USB摄像头在Linux下可用,主流摄像头:ZC301P、网眼2000(OV511系列芯片),罗技C210、C270系列3.0.1内核的专用摄像头等等。笔者犯了一个很低级的错误,没测试摄像头是否可用就直接移植motion,导致经常出现以下提示信息,纠结了两天啊:

[0] Thread 1 - Watchdog timeout, trying to do a graceful restart



开始网上搜索各种解决方案都无效,后来发现先把摄像头拔下来,运行motion - motion.conf,再把摄像头装上去,会一直拍照并保存灰色或者绿色图像,并且照片提示无法打开video2,网购了一个ZC301P的摄像头,并移植了驱动到内核上(2410、2440系列可以省了这一步),然后编译内核测试摄像头可用(下篇讲将ZC301P移植到开发板上可用),重新移植motion成功!

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------华--丽--的--分--割--线---------------------------------------------------------------------------
好了开始进入正题吧:

首先准备工作:将motion所需动态库全部拷到开发板根文件的lib目录下,一定要有这一步,否则会提示很多不支持,比如:

在motion进行./configure的时候显示Fatal Error YOU MUST HAVE jpeg Support?

出错原因就似乎因为没有将



这些库文件拷到开发板根目录上,拷过去即可

这里有动态库下载地址:http://download.csdn.net/detail/l461269717/4655481

第二步就是编译motion了:

下载一个motion压缩包,我用的是3.2.11.1,通过samba拷到Linux下,

[root@localhost ~]# tar zxvf motion-3.2.11.1.tar.gz

[root@localhost ~]# cd motion-3.2.11.1

[root@localhost ~]# ./configure --prefix=/自定义安装目录,我是直接安装源码下${PWD}/_install
/ --host=arm-linux --with-ffmpeg=/home/ffmpeg/ffmpeg-0.5.1/_install/ (若要视频记录则添上蓝色字体,否则会报出一大堆ffmpeg错误,但不影响拍照功能)

[root@localhost ~]# make

[root@localhost ~]# make install

[root@localhost ~]# mkdir -p /开发板根文件系统目录/var/run/motion

[root@localhost ~]# cp /motion安装目录/bin motion /开发板根文件系统目录/usr/sbin/

[root@localhost ~]# cp /motion安装目录/etc/motion-dist.conf /开发板根文件系统目录/etc/motion/motion.conf

接下来就是修改配置文件了:

[root@localhost ~]# cd /开发板根文件系统目录/etc/motion/

[root@localhost ~]# vi motion.conf,以下为motion.conf修改部分:

daemon off #关掉deamon模式

quiet on

locate on #探测到图像中有运动时,把运动区域用矩形框起来

videodevice /dev/video2 #加载USB摄像头的设备,如果2410、2440是video0,具体根据插上USB摄像头产生的设备节点;

width 640 #图像宽度

height 480 #图像高度

framerate 5 #每秒最大捕获帧数

target_dir /root/motion #设置拍摄图片的存储目录

threshold_tune off #设置是否使用motion detection阈值自动调节。设置off时,可以由threshold指定当探测到多少像素变化时,判断为图像中有运动。

threshold 3000 #这个是改变探测灵敏度,越小越灵敏,这里设为3000像素值

ffmpeg_cap_new on #在detect到运动时,用视频记录下来

ffmpeg_video_codec msmpeg4 #设定视频的编码器

webcam_localhost off #必须改成off才能通过pc访问

webcam_maxrate 8

snapshot_interval 5 #设定自动采集图片的周期,当有运动被检测到时,采集频率会自动变高。如果设置0,则无运动物体时不自动拍照

on_event_start /root/detected #当该事件产生时执行detected脚本,该脚本是简单的可执行shell脚本,下同

on_event_end /root/end #当该事件产生时执行end脚本

gap 5 #设置,在探测到运动后,多长时间没有运动的话就触发运动结束指令on_event_end。

关于这些配置的具体意义,参见motion官方wikihttp://www.lavrsen.dk/foswiki/bin/view/Motion/ConfigFileOptions
重启开发板,通过nfs挂接文件系统,输入motion -c motion.conf,移动摄像头,可在指定保存目录下看到拍到的监控图像



以下是有人经过监视区域时,摄像头自动抓拍到的画面(只有30W像素):











也可以在火狐或者谷歌浏览器输入http://172.22.17.12:8081/,来实时监控监控:



如果出现libc.so.6版本过低的提示,把自己的动态库覆盖过去就解决了,然后如果再提示一大堆错误,再把链接文件linuxrc覆盖就好了。

动态库下载地址:http://download.csdn.net/detail/l461269717/4609062
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: