利用linxu下的开源的motion搭建嵌入式视频动态监控系统

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

motion 是一套免费开源的移动图像监测程序(详见http://www.lavrsen.dk/foswiki/bin/view/Motion

先去下载源代码:https://github.com/xiaobo-linux/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像素值

可以在电脑的浏览器上打开server的IP地址,也就是linux的ip地址,例如我的是

192.168.1.100:8080 (这个地址是motion的配置页面,里面有很多motion的配置选项)

192.168.1.100:8081 (这个是motion的网络监控地址)

如果使用外网的话,stream_loacalhost off

然后就可以运行motion了

./motion

在摄像头前面移动,motion就会监测到物体移动,然后将捕捉到的图像保存到指定的目录下面

我的测试效果图(移动的手被矩形框起来了)

配置多个摄像头的方法是:

把motion 可执行文件跟要控制的摄像头的配置文件 motion.conf 放在一块

motion  + motion.conf 放在一起;

多个摄像头的话, 把 motion + motion.conf 放在别的文件夹内执行,motion.conf只需配置video编号跟浏览器查看摄像头的端口号

执行 ./moion 即可。

这样编译成的motion是没有视频编码功能的,要想将监控程序保存成视频文件,还要进行下面的更改。

重新配置motion之前还要先做好FFmpeg的编译准备工作。

先去下载FFmpeg

https://github.com/dwbuiten/FFmpeg

解压进入FFmpeg的目录,运行:

./configure --enable-memalign-hack --disable-debug  --prefix=/${PWD}/_install / (自定义安装目录,我是直接安装源码下)

(FFmpeg的编译详细参数参考http://www.cnblogs.com/ohmytime/archive/2013/05/12/ffmpeg-build-help.html)

在配置的时候会提示找不到yasm的错误(我的fedora 10是这样的,具体错误原因记不住了。。。)

去下载一个编译安装就好了:https://github.com/yasm/yasm

(安装方法:解压进入yasm,运行./autogen.sh 然后make && make install即可)

再执行

make

make install

进入到 _install目录下可以看到生成的库文件以及可执行文件。可以测试一下_install/bin目录下的ffplay 播放器

ffplay /home/test.mp4(视频文件为自己指定的文件)

如果成功播放视频则表示FFmpeg库编译成功。接下来的工作会用到这个_install目录

进入到motion目录执行:

make distclean

/configure  --prefix=/${PWD}/_install /  --with-ffmpeg=FFmpeg/_install/ (这个就是刚才编译的库文件的目录)

make

在这一步会遇到一个错:/FFmpeg-master/libavformat/matroskadec.c:1173: undefined reference to `BZ2_bzDecompressInit'

解决办法是修改Makefile的第35行:

LIBS = -lm -lpthread -lSDL -lpthread -ljpeg -L/home/qin/FFmpeg-master/_install/lib -lavformat -lavcodec -lavutil -lm -lz -lsqlite3 -lbz2

(最后的红色字体部分是新加上的)

重新make即可

make && make install

安装成功后保证motion.conf配置文件正确的情况下运行motion:

./motion

motion还有很多功能,比如:

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

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

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

还可以设置报警等功能。

如果把这个移植到开发板上,然后弄上个usb的摄像头,就可以实现实时视频监控或者移动图像的监控了.

linux下motion摄像头监控编译与配置的更多相关文章

  1. Linux 下V4l2摄像头采集图片,实现yuyv转RGB,RGB转BMP,RGB伸缩,jpeglib 库实现压缩RGB到内存中,JPEG经UDP发送功(转)

    ./configure CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld --host=arm-linux --prefix=/usr/loca ...

  2. [转]Caffe在Linux下的安装,编译,实验

    Caffe在Linux下的安装,编译,实验  原文地址:http://www.cnblogs.com/evansyang/p/6150118.html 第一部分:Caffe 简介 caffe是有伯克利 ...

  3. C语言高级应用---操作linux下V4L2摄像头应用程序

    我们都知道,想要驱动linux下的摄像头,其实很简单,照着V4L2的手册一步步来写,很快就可以写出来,但是在写之前我们要注意改变系统的一些配置,使系统支持framebuffer,在dev下产生fb0这 ...

  4. Linux下通过server-status监控性能

    Linux下通过server-status监控性能 前提:安装好Apache,在opt/路径下 查看Apache的工作模式 可以知道是 prefork.c模式 配置server-status 性能 进 ...

  5. Linux下Ganglia集群监控安装、配置笔记

    http://www.blogjava.net/henry14/archive/2011/12/17/ganglia.html 枪声依旧 Linux下Ganglia集群监控安装.配置笔记 Gangli ...

  6. Linux下日志文件监控系统Logwatch的使用记录

    Linux下日志文件监控系统Logwatch的使用记录 原文:http://www.cnblogs.com/kevingrace/p/6519504.html 在维护Linux服务器时,经常需要查看系 ...

  7. C语言高级应用---操作linux下V4L2摄像头应用程序【转】

    转自:http://blog.csdn.net/morixinguan/article/details/51001713 版权声明:本文为博主原创文章,如有需要,请注明转载地址:http://blog ...

  8. Linux下FFmpeg的安装编译过程【转】

    本文转载自:http://www.linuxidc.com/Linux/2013-06/85628.htm 详细说下在Linux下FFmpeg的安装编译过程.参考 Ubuntu 10.04安装编译FF ...

  9. Linux下,如何监控某个进程到底向哪个地址发起了网络调用

    Linux下,如何监控某个进程到底向哪个地址发起了网络调用 有时候,有些应用,比如idea,你发起某个操作时,其底层会去请求网络,获取一些数据. 但是不知道,请求了什么地址.举个例子,在idea中,m ...

随机推荐

  1. 研究base64_encode的算法

    从网上看了一些资料,为了方便自己理解,于是把它的编码原理,自己放在excel表格中清晰列出来,方便以后查阅.做的图如下:

  2. JavaScript对象(Object)

         JavaScript的简单数据类型包括数字.字符串.布尔值.null值和undefined值,其他所有的值都是对象.数字.字符串.布尔值“貌似”对象,因为他们拥有方法,但是他们是不可变的. ...

  3. java多线程-线程通信

    线程通信的目标是使线程间能够互相发送信号.另一方面,线程通信使线程能够等待其他线程的信号. 通过共享对象通信 忙等待 wait(),notify()和 notifyAll() 丢失的信号 假唤醒 多线 ...

  4. Midnight.js – 实现奇妙的固定头部切换效果

    Midnight.js 是一款 jQuery 插件,在页面滚动的时候实现多个头设计之间的切换,所以你总是有一个头与它下面的内容层叠,看起来效果很不错. Midnight.js 可以让你轻松实现这种切换 ...

  5. 2013年最新流行的响应式 WordPress 主题【上篇】

    WordPress 是最流行的内容管理系统,经历了多年的发展和演变.它的成功体现在庞大的社区,数百万的用户,设计师和开发者推动着 WordPress 往更高的层次发展. 海量的免费主题是 WordPr ...

  6. [js开源组件开发]network异步请求ajax的扩展

    network异步请求ajax的扩展 在日常的应用中,你可能直接调用$.ajax是会有些问题的,比如说用户的重复点击,比如说我只希望它成功提交一次后就不能再提交,比如说我希望有个正在提交的loadin ...

  7. 原生JS:Number对象详解

    Number对象 本文参考MDN做的详细整理,方便大家参考MDN JavaScript 的 Number 对象是经过封装的能让你处理数字值的对象.Number 对象由 Number() 构造器创建. ...

  8. Sublime Text 3汉化中文版

    Sublime Text 3汉化中文版是Sublime Text2的升级版.Sublime Text 是一款流行的文本编辑器软件,有点类似于TextMate,跨平台,可运行在Linux,Windows ...

  9. 也来谈谈wap端瀑布流布局

    Definition 瀑布流布局,在视觉上表现为参差不齐的多栏布局,随着页面滚动条向下滚动,新数据不断被加载进来. 瀑布流对于图片的展现,是高效而具有吸引力的,用户一眼扫过的快速阅读模式可以在短时间内 ...

  10. 批量另存mxd

    在GIS数据处理中,批量操作是经常遇到的问题,Python脚本是解决问题的最好方法.现在需要将arcgis10.1的mxd另存为10.0,不仅数量较多,而且每个mxd要素和标注非常多,手动来操作确实慢 ...