基于Dragboard 410c開(kāi)發(fā)板的USB攝像頭圖像采集及發(fā)布
看完前面幾個(gè)blog 相信大家已經(jīng)基本上會(huì)用Python腳本在Dragoboard 410c上進(jìn)行各種關(guān)于USB攝像頭圖像采集的開(kāi)發(fā)了,這里為了進(jìn)一步讓大家能夠發(fā)揮UBS攝像頭的作用,和方便大家在開(kāi)發(fā)過(guò)程中將Dragoboard 410c采集到的信息在網(wǎng)上進(jìn)行發(fā)布,本文結(jié)合前面的一篇介紹BOA web服務(wù)器的blog,帶大家一起來(lái)完成如何在Dragboard 410c上用Python腳本和OpenCV庫(kù)實(shí)時(shí)的采集圖像,并且發(fā)布到web上,用戶通過(guò)web就可以訪問(wèn)攝像頭采集的圖片。
首先大家需要準(zhǔn)備除了Blog文章-- 基于Dragoboard 410c的USB攝像頭人臉識(shí)別中提到的所有設(shè)備之外,還需要準(zhǔn)備一個(gè)無(wú)線路由器為Dragoboard 410c開(kāi)發(fā)板提供網(wǎng)絡(luò)支持,同時(shí)還需要準(zhǔn)備一個(gè)手機(jī)或者電腦,用于測(cè)試訪問(wèn)Dragoboard 410c開(kāi)發(fā)板的信息。
接著我們就可以開(kāi)始搭建我們的Dragoboard 410c的web服務(wù)器環(huán)境了,這里大家可以直接到http://www.boa.org/官網(wǎng)下載源碼,源碼下載好后,就可以copy到Dragonboard 410c開(kāi)發(fā)板,在開(kāi)發(fā)板上使用tar -xvf 文件名進(jìn)行解壓,解壓后cd 命令進(jìn)入到src目錄下,在src目錄下執(zhí)行./config 進(jìn)行編譯配置生成makefile文件,這里我們要進(jìn)行簡(jiǎn)答的修改,具體修改如下:
修改 頭文件 defines.h
找到#define SERVER_ROOT “/etc/boa” 修改成
#define SERVER_ROOT “/var/www”
這里定義的是 web 服務(wù)器的文件根目錄(用戶可以自行定義,是板上的目錄,只要跟 boa.conf 中設(shè)置一致就可以了)
然后運(yùn)行 make 進(jìn)行編譯,得到的可執(zhí)行程序 boa,將調(diào)試信息剝?nèi)?,得到的最后程序只?2872Byte 大小。
然后按照我之前寫(xiě)過(guò)的一種使用交叉編譯方法移植Boa服務(wù)器中的配置方法對(duì)web服務(wù)器進(jìn)行配置即可。(基于Dragoboard 410c的web服務(wù)器移植)
配置好后,我們可以找到/var/www的目錄,這個(gè)時(shí)候我們只要用sudo boa 啟動(dòng)boa服務(wù)器,然后將編寫(xiě)好的html文件和腳本文件放到該目錄下,即可通過(guò)瀏覽器進(jìn)行訪問(wèn)了,如果能夠成功訪問(wèn)到html文件表示boa服務(wù)器搭建成功。
完成Boa服務(wù)器搭建后,接著我們就可以參考文章:基于Dragoboard 410c的USB攝像頭保存圖片一文中的方法,獲取和保存圖片,編寫(xiě)一個(gè)腳本程序來(lái)獲取圖片并且保存到WWW目錄下,然后我們?cè)賹?xiě)一個(gè)html文件來(lái)顯示和刷新該圖片既可以通過(guò)web網(wǎng)絡(luò)來(lái)訪問(wèn)攝像頭采集到的圖片了。
首先編寫(xiě)獲取和保存圖片信息的腳本,這里我們?nèi)サ袅嘶贒ragoboard 410c的USB攝像頭保存圖片文章中的顯示部分代碼,只需要每個(gè)一段時(shí)間獲取圖片然后保存到WWW文件夾下中即可,Python代碼如下:
完成獲取和保存USB攝像頭圖像代碼編寫(xiě)后,我們可以進(jìn)行簡(jiǎn)單的測(cè)試,運(yùn)行python get_pic.py就可以看到www文件夾下面就有.jpg圖片文件存在。
然后我們就可以來(lái)編寫(xiě)html文件了,html主要用于前端的交互,顯示圖片,這里我們也是定時(shí)的刷新顯示圖片,然后就可以實(shí)現(xiàn)動(dòng)態(tài)的圖像采集和顯示了,具體的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
完成html編寫(xiě)后,將html文件保存到www目錄下,然后我們將板子連接到wifi,然后通過(guò)連接該wifi的手機(jī)或者電腦就可以訪問(wèn)USB攝像頭圖像了,具體在瀏覽器輸入192.168.23.6/test.html 即可,具體效果如下:
??????? <!DOCTYPE html>? ? ? ? <html>? ? ? ? <head>? ? ? ? <meta charset="utf-8" />? ? ? ? <meta http-equiv="refresh" content="1" />? ? ? ? <TItle> yuanchengjiankon </title>? ? ? ? </head>? ? ? ? <body>? ? ? ? <p>test</p>? ? ? ? <p>? ? ? ? <img src="output.jpg" width="1200" height="700" />? ? ? ? </p>? ? ? ? </body>? ? ? ? </html>??
這里只是向大家展示了簡(jiǎn)單的圖片web發(fā)布,其實(shí)大家在自己的創(chuàng)作過(guò)程中,如果想將采集到的數(shù)據(jù)發(fā)布到網(wǎng)絡(luò)上,原理也類(lèi)似,還有如果你想實(shí)現(xiàn)更多的通過(guò)web來(lái)對(duì)dragonboard 410c進(jìn)行控制,可以參考cgi編程來(lái)實(shí)現(xiàn)。
Q:文檔中提到的開(kāi)發(fā)環(huán)境是什么?
A:文檔中提到的開(kāi)發(fā)環(huán)境是在 Dragoboard410c 上進(jìn)行 Python 腳本開(kāi)發(fā),并涉及 USB 攝像頭圖像采集。
Q:USB 攝像頭圖像采集主要使用什么工具?
A:主要使用 Python 腳本在 Dragoboard410c 上進(jìn)行開(kāi)發(fā)。
Q:如何實(shí)現(xiàn) USB 攝像頭圖像采集?
A:相信大家已經(jīng)基本上會(huì)用 Python 腳本在 Dragoboard410c 上進(jìn)行各種關(guān)于 USB 攝像頭圖像采集的開(kāi)發(fā)了,具體可參考文檔進(jìn)一步了解。
Q:提到的 cgi 編程在實(shí)現(xiàn)中有什么作用?
A:可以參考 cgi 編程來(lái)實(shí)現(xiàn)相關(guān)功能,但文檔未明確具體作用。
Q:開(kāi)發(fā)中需要哪些技術(shù)基礎(chǔ)?
A:需要了解 Python 腳本編程以及對(duì) Dragoboard410c 有一定的了解。
Q:文檔中的方法適用于哪些場(chǎng)景?
A:適用于在 Dragoboard410c 上搭建 web 服務(wù)器并實(shí)現(xiàn) USB 攝像頭圖像采集和發(fā)布的場(chǎng)景。
Q:有沒(méi)有其他類(lèi)似的實(shí)現(xiàn)方法?
A:文檔中未提及其他類(lèi)似實(shí)現(xiàn)方法。
Q:USB 攝像頭的兼容性如何?
A:文檔中未提及 USB 攝像頭的兼容性問(wèn)題。
Q:開(kāi)發(fā)過(guò)程中可能遇到哪些問(wèn)題?
A:文檔中未明確開(kāi)發(fā)過(guò)程中可能遇到的問(wèn)題。
Q:如何進(jìn)一步學(xué)習(xí)相關(guān)技術(shù)?
A:可以通過(guò)查找更多關(guān)于 Dragoboard410c 和 Python 腳本編程以及 cgi 編程的資料進(jìn)行學(xué)習(xí)。