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

         所谓移动图像监测,简单来说就是利用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

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值