微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 在线监控系统(项目结题)

在线监控系统(项目结题)

时间:10-02 整理:3721RD 点击:
项目内容:通过摄像头来获取实时信息,可以通过网页的方式来浏览或来监视的功能。
一、需要使用的设备或者材料:

  • 摄像头

    可以是cmos摄像头,或者是usb摄像头,本项目中使用的是usb摄像头。


2.开发板一套


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

                DeviceDrivers --->
                         Multimedia support --->
                                 Video For Linux
                                
  • Enable Video For Linux API 1 (DEPRECATED) (NEW)
                                    
  • Video capture adapters (NEW) --->
                                           
  • V4L USB devices (NEW) --->
                                                     USB Video Class (UVC)
                                                    
  • UVC input events device support (NEW)
      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的功能和效果。
    本次测试功能到此可以完结了。

                      


    厉害了哦

  • Copyright © 2017-2020 微波EDA网 版权所有

    网站地图

    Top