微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于Dragboard 410c开发板的USB摄像头图像采集及发布

基于Dragboard 410c开发板的USB摄像头图像采集及发布

时间:02-17 来源:互联网 点击:

看完前面几个blog 相信大家已经基本上会用Python脚本在Dragoboard 410c上进行各种关于USB摄像头图像采集的开发了,这里为了进一步让大家能够发挥UBS摄像头的作用,和方便大家在开发过程中将Dragoboard 410c采集到的信息在网上进行发布,本文结合前面的一篇介绍BOA web服务器的blog,带大家一起来完成如何在Dragboard 410c上用Python脚本和OpenCV库实时的采集图像,并且发布到web上,用户通过web就可以访问摄像头采集的图片。

首先大家需要准备除了Blog文章-- 基于Dragoboard 410c的USB摄像头人脸识别中提到的所有设备之外,还需要准备一个无线路由器为Dragoboard 410c开发板提供网络支持,同时还需要准备一个手机或者电脑,用于测试访问Dragoboard 410c开发板的信息。

接着我们就可以开始搭建我们的Dragoboard 410c的web服务器环境了,这里大家可以直接到http://www.boa.org/官网下载源码,源码下载好后,就可以copy到Dragonboard 410c开发板,在开发板上使用tar -xvf 文件名进行解压,解压后cd 命令进入到src目录下,在src目录下执行./config 进行编译配置生成makefile文件,这里我们要进行简答的修改,具体修改如下:

修改 头文件 defines.h

找到#define SERVER_ROOT "/etc/boa" 修改成

#define SERVER_ROOT "/var/www"

这里定义的是 web 服务器的文件根目录(用户可以自行定义,是板上的目录,只要跟 boa.conf 中设置一致就可以了)

然后运行 make 进行编译,得到的可执行程序 boa,将调试信息剥去,得到的最后程序只有62872Byte 大小。

然后按照我之前写过的一种使用交叉编译方法移植Boa服务器中的配置方法对web服务器进行配置即可。(基于Dragoboard 410c的web服务器移植)

配置好后,我们可以找到/var/www的目录,这个时候我们只要用sudo boa 启动boa服务器,然后将编写好的html文件和脚本文件放到该目录下,即可通过浏览器进行访问了,如果能够成功访问到html文件表示boa服务器搭建成功。

完成Boa服务器搭建后,接着我们就可以参考文章:基于Dragoboard 410c的USB摄像头保存图片一文中的方法,获取和保存图片,编写一个脚本程序来获取图片并且保存到WWW目录下,然后我们再写一个html文件来显示和刷新该图片既可以通过web网络来访问摄像头采集到的图片了。

首先编写获取和保存图片信息的脚本,这里我们去掉了基于Dragoboard 410c的USB摄像头保存图片文章中的显示部分代码,只需要每个一段时间获取图片然后保存到WWW文件夹下中即可,Python代码如下:

完成获取和保存USB摄像头图像代码编写后,我们可以进行简单的测试,运行python get_pic.py就可以看到www文件夹下面就有.jpg图片文件存在。

然后我们就可以来编写html文件了,html主要用于前端的交互,显示图片,这里我们也是定时的刷新显示图片,然后就可以实现动态的图像采集和显示了,具体的html代码如下:

        #!/usr/bin/env python
        import cv2, sys
        import TIme
        DEVICE_NUMBER = 0
        IMAGE_FILE = "output.jpg"
        # Init webcam
        vc = cv2.VideoCapture(DEVICE_NUMBER)
       # Check if the webcam init was successful
       if vc.isOpened(): # try to get the first frame
       retval, frame = vc.read()
       else:
       sys.exit(1)
       # If webcam read successful, loop indefinitely 
       while retval:
       # Write some text onto the frame
       # Show the image on the screen
       # cv2.imshow("DB410c Workshop #3: Show Video", frame)
       cv2.imwrite(IMAGE_FILE, frame)
        TIme.sleep(1)
       # Grab next frame from webcam
       retval, frame = vc.read()
      # Exit program after waiTIng for a pressed key
       if cv2.waitKey(1) == 27:
        break

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

网站地图

Top