前几天在网上偶然看到一篇博客,是利用linxu下的开源的motion搭建嵌入式视频动态监控系统,感觉很好很强大于,是就想自己编译移植一下试试。

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

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

先去下载源代码:https://github.com/sackmotion/motion

以下操作都是在虚拟机fedora 10 里面操作的。

解压源码,进入到目录里面运行

./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像素值

然后就可以运行motion了

./motion

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

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

这样编译成的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

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

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

192.168.1.100:8081 (这个是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下的开源移动图像监测程序--motion编译与配置【转】

    本文转载自:http://www.cnblogs.com/qinyg/p/3355707.html 前几天在网上偶然看到一篇博客,是利用linxu下的开源的motion搭建嵌入式视频动态监控系统,感觉 ...

  2. linux下的第一个C程序及其编译方法

    #include <stdio.h> #include <stdlib.h>   int main(int argc, char ** argv) {     printf(& ...

  3. linux 下检查java jar包 程序是否正常 shell

    linux 下检查java jar包 程序是否正常 shell http://injavawetrust.iteye.com BATCH_SERVER="batch.jar" NR ...

  4. Linux下如何让jar包程序在后台一直执行

    Linux下如何让Jar包程序在后台一直执行 shell命令 nohup java -jar xxx.jar & &:让程序后台执行. nohub:让程序控制台输出转移到nohub.o ...

  5. 在Linux下,如何分析一个程序达到性能瓶颈的原因

    0.在Linux下,如何分析一个程序达到性能瓶颈的原因,请分别从CPU.内存.IO.网络的角度判断是谁导致的瓶颈?注意现在的机器CPU是多核 1.用sar -n DEV 1 10 2.用iotop命令 ...

  6. Linux下使用vim编辑C程序

    这几天在系统能力班自学linux,加上最近大数据课上开始使用linux,我在这里总结一下,linux下使用vim编辑c程序的一些问题. 大数据课上是直接使用micro来编辑的,我这里只是简单的说明一下 ...

  7. 在Linux下使用linuxdeployqt发布Qt程序

    一.简介 linuxdeployqt 是Linux下的qt打包工具,可以将应用程序使用的资源(如库,图形和插件)复制到二进制运行文件所在的文件夹中. 二.安装linuxdeployqt 去github ...

  8. Linux下通过.desktop 文件创建桌面程序图标及文件编写方式(Desktop Entry文件概述)

    Linux下通过.desktop 文件创建桌面程序图标及文件编写方式 1.Desktop Entry文件概述:在 Windows 平台上,用户可以通过点击位于桌面或菜单上的快捷方式轻松打开目标应用程序 ...

  9. Linux下部署开源版“禅道”项目管理系统《转载》

    Linux下部署开源版“禅道”项目管理系统 https://www.cnblogs.com/xxsl/p/6525378.html

随机推荐

  1. 创建服务类PO

    转载:https://blogs.sap.com/2014/03/04/creating-a-simple-service-po-using-bapipocreate1bapipochange/ Cr ...

  2. android如何用adb shell启动应用程序

    昨天研究了很久,可能由于基础比较菜吧,所以,没有搜到一个可以直接解决问题的,需要综合几个之后,问题得以解决,记下方法,为了方便自己之后遇到同样问题,也为了方便搜索同样问题的朋友. 主要用到了aapt和 ...

  3. The parent project must have a packaging type of POM

    在Eclipse中使用Maven添加模块时报错:The parent project must have a packaging type of POM 解决办法: 是将pom.xml 中的  < ...

  4. android——使用pull解析xml文件

    1.persons.xml 将persons.xml文件放到src目录下.其代码如下: <?xml version='1.0' encoding='UTF-8' standalone='yes' ...

  5. SharePoint 2013 &quot;通知我&quot;简单的功能

    简单的功能 "通知我"内部列表或文档库中的主要项目.加入/删除/修改等操作,用户的E- mail通知设定功能:设置列表或文档库通知的能力,有可能设置通知为一个单一的项目.这是Sha ...

  6. 'datetime.datetime' has no attribute 'datetime'问题

    写python时,用到了日期计算.于是写了datetime.datetime(*d_startTime[0:6])这样的代码. 结果编译不通过,报 'datetime.datetime' has no ...

  7. fzu 1911 Construct a Matrix(矩阵快速幂+规律)

    题目链接:fzu 1911 Construct a Matrix 题目大意:给出n和m,f[i]为斐波那契数列,s[i]为斐波那契数列前i项的和.r = s[n] % m.构造一个r * r的矩阵,只 ...

  8. QT在构造函数中退出程序

    原地址:http://www.tuicool.com/articles/RZnYze 在QT的界面类的构造过程中,如果想退出整个程序,暴力的做法是调用exit(-1)进行,另外一种不是那么暴力的方式如 ...

  9. CSS3实现8种Loading效果【第二波】

    原文:CSS3实现8种Loading效果[第二波] 今晚吃完饭回宿舍又捣鼓了另外几种Loading效果,老规矩,直接“上菜“…… 注:gif图片动画有些卡顿,非实际效果! PS:若要转载请注明出处,尊 ...

  10. HTTP协议结构

    HTTP报文=从客户机到服务器的请求+从服务器到客户机的响应 1.请求报文的格式如下: 请求头   通用信息头    请求头    实体头    报文主体 请求行的格式为: Method[分隔符]Re ...