利用OK6410与OV9650搭建的在yeelink平台上搭建的视频监控平台

硬件环境:飞凌OK6410开发板OV9650摄像头目标要求:通过开发板平台,上传摄像头采集的图像。步骤:1.开发板驱动摄像头显示;2.搭建web服务器,通过浏览器查看摄像头图像;3.抓取网页图像4.上传至yeelink5.通过motion软件包实现图像的监控系统硬件图,有图有真相:参考资料1.huawei hg255d(openwrt)+logitech c270+ wget&http-post 上传yeelinkhttp://bbs.yeelink.net/thread-188-1-1.html2.图像侦测:探测运动的软件包motionhttp://skpsun.blog.163.com/blog/static/27600552009121109154/3.发送图像:linux下使用sendmail发送带附件的邮件http://jamesbond0479.blog.163.com/blog/static/241475820115229336243/步骤1【问题1】烧写如官方提供的uboot、zImage、rootfs.yaffs2,然后使用#testcamera命令测试摄像头,屏幕没有反应,打印消息如下:[root@FORLINX6410]# ./testcameraStart Main already open the devicise codec Before openning FB VIDIOC_S_FMT is c0cc5605VIDIOC_STREAMON is 40045612start to get pic 0而且点击QT界面下的照相机,提示信息no camera。【猜想】是不是PIC总线没有在内核勾选? │ Location: │ │ -> Device Drivers │ │ -> Staging drivers (STAGING [=n]) │ │ -> Data acquisition support (comedi) (COMEDI [=n]) │ │ -> Comedi PCI drivers (COMEDI_PCI_DRIVERS [=n]) Location: │ │ -> Device Drivers │ │ -> HID Devices (HID_SUPPORT [=y]) │ │ -> Special HID drivers │ │ -> PicoLCD (graphic version) (HID_PICOLCD [=n]) 勾选后重新编译生成zImage。【问题1解决】内核支持PCI,只不过光盘给的烧写文件有问题,其中,zImage需要换成最新的OK6410-B的烧写文件,网址如下:http://pan.baidu.com/share/link?shareid=1595880558&uk=2754759285#dir/path=%2F%E6%AD%A3%E5%BC%8F%E5%8F%91%E5%B8%83%E8%B5%84%E6%96%99%E5%85%89%E7%9B%98%E6%96%87%E4%BB%B6%2FOK6410-B%20%206410%E5%AE%98%E6%96%B9%E5%9F%BA%E7%A1%80%E8%B5%84%E6%96%99-1G%2FLinux-3.0.1%2Ffilesystem效果是输入#testcamera,LCD有显示,不过LCD效果很不好。LCD显示效果:LCD上部即为摄像头的图像,QT里的测试程序没有编写好,不过至少摄像头能用了。开发环境:主机:VMware+ubuntuFS:nfsnfs的配置过程及注意事项见:http://blog.csdn.net/jason6765599/article/details/19759689步骤1基本完成,继续步骤2的工作步骤2想复杂了,在开发板端构建web服务器没有什么意义,想要外网能够访问,就必须借助于具有外网IP与内网IP的设备,在开发板上搭建web服务器只能够自娱自乐一下。将摄像头采集的头像发布到类似yeelink的平台上,其实只需要将图像打包,然后调用平台的API即可,所以说这一步看似必要,其实是鸡肋,另外motion获取图像并且发送邮件,这个扩展功能能够实现真是极好的了,好了,可以洗洗睡觉了,可惜宿舍停水,热水脚都没得洗,悲催。开发板通过网络上传图像的基本步骤是:开发板----wget----->图像-------curl-------->POST至Yeelink平台主机中,通过VMware建立了ubuntu系统,在ubuntu下测试使用crul来向yeelink平台上传一幅位于ubuntu下的图像。1.进入yeelink平台,建立设备PostImageTestDevice,建立图像型传感器ImageTest,建立ImageTest后会生成CURL可以使用的网址:定义CURL命令格式:参看请求实例 (运用curl):curl --request POST --data-binary @datafile.jpg --header "U-ApiKey: YOUR_API_KEY_HERE" http://api.yeelink.net/v1.0/device/12/sensor/3/photos需要在HTTP Header中增加API Key来授权写入操作, 具体请参照API Key. 支持一次传送一幅图像数据.Note: 目前限定相邻图像数据上传间隔须大于等于10s, 过于频繁的请求会收到406 Response.参照API的文档,定义上传VMWAREubuntu下/monitor/hero.jpg文件至yeelink平台,新建上传命令文件:/monitor/curl-test,主要参数为:上传图片、数据格式、U-ApiKey、传感器网址。curl --request POST --data-binary @/monitor/hero.jpg --header "U-ApiKey: YOUR_API_KEY_HERE" http://api.yeelink.net/v1.0/device/7811/sensor/12369/photos在ubuntu安装CURL:#apt-get install curl运行curl-test#./curl-test效果:nice!下面考虑的是如何获得传感器的图像2014-02-24今天弄了一天,飞凌OV9650摄像头通用性不好,本以为只是LCD显示问题,但是自带的测试程序的将VGA转存为jpg文件的函数并不能够通过编译,此路不通咱们换一条路,准备走安装mjpg-STRAMER的老路,可是当mjpg-STREAMER安装上后,根本不能够利用摄像头通过web服务器发布图像,在此估计是摄像头的通用性能不好,毕竟不是USB的,还是MARK一下,制作OK6410兼容的mjpg-STREAMER的方法,详情请猛点如下网址:http://blog.csdn.net/jason6765599/article/details/198386212014-02-25还是放弃原来的的OV9650,向同学借了一个摄像头,发现能用,那怎么才能知道摄像头是符合UVC标准,还有测试摄像头呢?请猛戳如下网址:http://blog.csdn.net/jason6765599/article/details/19907263摄像头能用,本来luvcview支持两种格式的显示1.jpg格式2.yuv格式,此摄像头只支持yuv格式,这就导致了mjpeg-STREAMER不能用了,土办法,首先使用摄像头拍照,yuv格式拍照的照片格式为*.pnm,然后使用图片格式工具netpbm将pnm格式图片转换为jpg格式,当然这一部分是在ubuntu下操作的啦。1.可以使用在资料光盘中的路径为:Linux-3.0.1\apptest\摄像头测试\USB摄像头\USBCamera- linux+android\linux3.0.1系统下-2012-07-05/luvcview-2012-07-05.tar,源码默认是不能够拍照的,但是具有拍照功能,修改源码luvcview.c中:在 if (videoIn->getPict) 前添加代码videoIn->getPict=1;代表使能拍照功能,重新编译后,将执行文件luvcview拷贝至开发板的根目录下,然后执行:# ./luvcview -d /dev/video2 -f yuv开发板将拍的照片存放至与luvcview同样的目录路径下,也就是根目录下,扩展名为.pnm2.问题在于yeelink平台并不支持pnm格式的图片,因此需要转换,暂时开发板上是搞不定了的,只能依靠强大的ubuntu了,百度了一下,发现一款图片转换工具netpbm,能够将pnm等多种图片格式转换为jpg,在主机上安装netpbm:#sudo apt-get install netpbm转换图片,命令格式为:#pnmtojpeg -quality=60 foo.ppm > foo.jpg命令可以参考http://netpbm.sourceforge.net/doc/pnmtojpeg.html3.然后使用主机ubuntu中的CURL工具上传至yeelink平台。这一套是成功了,但是问题是开发板对于主机的依赖太大,图片转换和上传图片都是ubuntu完成的,OK6410完成的仅仅是驱动摄像头,然后拍照。在OK6410需要完善的工作是:1.搭建类似CURL能够HTTP-POST数据的工具;2.得到jpg格式的图片,要么换摄像头,要么移植图片转换工具。今天的效果如下:后面要做的工作是:1.测试摄像头是否合格,使用命令:#luvcview -L -d /dev/video2# luvcview -d /dev/video2 -f jpg -s 320x2402.mjpeg-STREAMER能顾正常使用:#mjpg_streamer -i "/mjpeg/input_uvc.so -d /dev/video2" -o "/mjpeg/output_http.so"用火狐浏览器打开一个网页输入下面地址就能够看到一个视频(开发板的IP为192.168.1.100): http://192.168.1.100:8080/?action=stream 打开一个网页输入下面地址就能够看到一个静态图片: http://192.168.1.100:8080/?action=snapshot3.更新wget命令或者安装CURL命令4.上传图片突然想起来,那个mjpeg-TREAMER的库的名字就叫做:input_uvc.so,怎么可能不能够输入yuv模式的图片,然后想了一下,报错是由于ERROR: could not find input plugin,也就是找不到入口,应该就是入口库,然后试着把所有的库拷贝至/usr/lib,然后再使用命令:# mjpg_streamer -i "input_uvc.so -y -f 15 -r 320*240 -q 50 -d /dev/video2" -o "output_http.so -p 8080 -w /www/camwww"然后就可以了啊!用火狐浏览器打开,效果如下:好了,上句命令参考了:http://hi.baidu.com/xhk7777/item/35a1afb553dc6ae84fc7fd33不过主要原因还是库找不到,需要拷贝至指定文件夹下。好了,OK6410开发板通过摄像头,利用mjpeg-STREAMER搭建网页视频流,并且利用wget工具截取视频为图片一条龙服务搭建完成,通过执行脚本文件getimage.sh,即可完成全套动作:#! /bin/shmjpg_streamer -i "input_uvc.so -y -f 15 -r 320*240 -q 50 -d /dev/video2" -o "output_http.so -p 8080 -w /www/camwww" &wget "http://192.168.1.100:8080/?action=snapshot" -O /test.jpg注意第一句的&,此符号代表在后台执行程序,第二句表示将视频流截取为test.pg的图片,整套系统的基本版剩下的任务是通过利用类似CURL的服务将图片文件传输至yeelink。今天基本上完工了,晚上将curl安装至NFS下,nice。首先需要交叉编译,然后安装,具体的编译方法可以猛戳如下连接:http://blog.csdn.net/jason6765599/article/details/19927041安装好curl后就只需要POST-DATA了,在开发板中输入如下命令:curl --request POST --data-binary @/hero.jpg --header "U-ApiKey: YOUR_KEY" http://api.yeelink.net/v1.0/device/7811/sensor/12369/photos就会出现如下惊喜的结果:接下来只需要将以上内容整合,优化上传图片了,NICE,man!2014-02-27接下来写shell脚本文件了,将下载图片与上传图片的功能写入update shell中,并且向crontab添加计划任务,每格一定的时间wget image,并且curl图片之yeelink平台.1.首先需要测试crontab任务,主要添加的是:每隔一定时间,执行一次update,具体配置busybox下crontab任务,参见下文,请猛戳如下网址:http://blog.csdn.net/jason6765599/article/details/200455832.编写shell脚本.2.1首先判断mjpeg-STREAMER是否已经启动,若未启动,则执行启动命令,若启动完成,则继续执行2.2;2.2判断是否执行成功,成功则执行2.3,失败则退出;2.3使用wget命令得到image.jpg文件,若成功,则继续2.4,若失败则退出;2.4使用curl命令将图片POST至yeelink平台,成功与失败均推出程序。所有的执行结果均记录如updatelog日志文件。今天初步完成了基本功能,逻辑判断内容还没有添加,有待完善,看到自己摄像头拍摄的图片在yeelink上成功显示,真是倍儿爽啊!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值