在线监控系统(项目结题)
一、需要使用的设备或者材料:
摄像头
可以是cmos摄像头,或者是usb摄像头,本项目中使用的是usb摄像头。


3.需要网线,usb转TTL。

二、开发环境的搭建
1.开发板连接好串口工具和网线。开发板正常启动后,网络能够正常的使用。
2.虚拟机中安装nfs服务器,这个工作在之前的报告中已经详细的讲解了,可以参照下面的链接:
http://bbs.elecfans.com/forum.php?mod=viewthread&tid=1099762&extra=
三、motion 功能的实现
1motion简介
motion 是一套免费开源的移动图像监测程序(详见http://www.lavrsen.dk/foswiki/bin/view/Motion)所谓移动图像监测,简单来说就是利用摄像头定点监测某个区域,当有移动物体经过时,摄像头便自动抓拍(要监测多大物体、按拍照速率都是可调的),并把拍到的图像存储在指定目录,实现无人监控功能。
先去下载源代码:https://github.com/sackmotion/motion
2 motion编译
解压源码,进入到目录里面运行
./configure --prefix=/${PWD}/_install / ( 自定义安装目录,我是直接安装源码下)
然后运行
mkdir _install
make
make install
cd _install
cp etc/motion-dist.conf etc/motion.conf
编辑配置文件:
vi etc/motion.conf(里面的具体配置意义可以看它的注释,或者见http://www.lavrsen.dk/foswiki/bin/view/Motion/ConfigFileOptions)
关键的几点配置:
daemon off #关掉deamon模式
locate_motion_mode on #探测到图像中有运动时,把运动区域用矩形框起来
videodevice /dev/video0 #加载USB摄像头的设备(对应自己的摄像头设备)
width 640 #图像宽度
height 480 #图像高度
target_dir /root/motion #设置拍摄图片的存储目录
threshold 3000 #这个是改变探测灵敏度,越小越灵敏,这里设为3000像素值
3 motion移植到开发板
将编译好的motion可执行文件copy到/usr/bin下面;
Motion-dist.conf复制到home文件夹下面;
将需要的库文件copy到/usr/lib下面
进入开发板系统,进入/home 目录, 执行以下命令,启动 USB 摄像头测试程序
mkdir /var/run/motion
touch /var/run/motion/motion.pid
motion -c motion-dist.conf
可以看到motion已经正常启动了。
这时候我们可以在浏览器里面,看到摄像头采集到的图片了。
查看开发板 ip,在 windows 或者 Ubuntu 的浏览器输入 ip:8081 即可看到图像。

四、mjpg-stream
1、mjpg-stream 简介
"MJPG-streamer",是用于从webcam摄像头采集图像,把他们以流的形式通过基于ip的网络传输到浏览器如Firehox,Cambozola,VLC播放器,Windows的移动设备或者其他拥有浏览器的移动设备。她可以利用某些webcams的硬件压缩功能来降低服务器CPU的开销。她为嵌入式设备和一些常规服务器提供了一个轻量且更少CPU消耗的方案,因为她无需为视频帧压缩浪费大量的计算效率(这件事交给硬件了)。例子是:在一个主频200MHz的路由器上(一个例子是cisco经典无线的linkfs WRT54G路由,其可以运行openWRT(迷你linux系统),主频200MHz,4MRAM,16Flash),流编码一个960x720像素的视频,她可以减少10%的cpu使用。
2、配置内核是内核支持芯片的摄像头
Make menuconfig
Multimedia support --->
Video For Linux
USB Video Class (UVC)
3、mjpg-stream的移植
mjpg-stream的移植需要jpeg的库,所以我们先移植jpeg的库
(1)jpeg库的移植
1)下载jpeg源码
2)解压源码包
tar xvf jpegsrc.v9b.tar.gz
3)配置源码
d jpeg-9b./configure --prefix=/home/linux/video/jpeg--host= arm-linux-gnueabihf
4)编译Make
5)安装
make install
(2)mjpg-stream的移植
1)mjpg-stream源码包通过下面这个网址下载
http://sourceforge.net/projects/mjpg-streamer/
2)解压源码
tarxvf mjpg-streamer-r63.tar.gz
3)修改源码
cdmjpg-streamer-r63
修改顶层makefile及plugins目录中的各级makefile将所有
CC=gcc
修改为CC= arm-linux-gnueabihf-gcc
修改plugins/input_uvc/Makfile修改
CFLAGS+= -O2 -DLINUX -D_GNU_SOURCE -Wall -shared –fPIC
为
CFLAGS+= -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/home/linux/video/jpeg/include修改
$(CC)$(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
为
$(CC)$(CFLAGS) -ljpeg -L/home/linux/s3c2410-2.6.35/video/jpeg/lib -o $@ input_uvc.cv4l2uvc.lo jpeg_utils.lo dynctrl.lo
4)编译
Make
5)测试
摄像头插入USB接口,后提示信息如下

将编译的jpeg库文件全部copy到开发板的/usr/lib文件夹下面。

mjpg_streamer需要的文件全部copy到/home文件夹下面

在串口调试下面输入以下命令来启动:
./mjpg_streamer-i "input_uvc.so -d /dev/video0 -r 640x480
-f 20" -o "output_http.so -p 8082 -w/www/camwww"

在虚拟机的浏览器输入http://192.168.1.105:8082/?action=stream就可以看到摄像头采集到的信息。

两种方式都可实现在网页里面来查看摄像头的信息,motion对用动作可以进行拍照功能,感觉一闪一闪的,mjpg比较平滑点,对用这两种方式后面会进一步比较,确定更适合项目的功能要求。下一步还会进一步测试其他webcam的功能和效果。
本次测试功能到此可以完结了。
厉害了哦
