?

基于Intel Edison的嵌入式實時圖像采集傳輸與錄制系統設計

2018-01-05 00:29張修軍劉惠東
關鍵詞:嵌入式攝像頭傳輸

張修軍,劉惠東,李 杰

(成都大學 信息科學與工程學院,四川 成都 610106)

基于Intel Edison的嵌入式實時圖像采集傳輸與錄制系統設計

張修軍,劉惠東,李 杰

(成都大學 信息科學與工程學院,四川 成都 610106)

基于Yocto Linux的Intel Edison嵌入式開發工具,設計并開發了一套實時圖像采集傳輸及錄制系統.通過USB攝像頭對圖像進行采集,并將圖像數據通過視頻服務器MJPG-Streamer傳輸到外部移動設備上,同時通過Intel Edison開發工具調用OpenCV圖像庫對圖像數據進行處理及保存.測試結果表明,系統具有良好的實時性、高分辨率、低成本及易于拓展升級等優點.

嵌入式;實時;圖像采集;傳輸;錄制;Intel Edison;OpenCV;MJPG-Streamer;Video4Linux

0 引 言

目前,傳統的視覺圖像采集大多是基于“攝像頭—圖像采集卡—通用PC機"三者為一體的系統,但這種視覺系統不能滿足實際應用對圖像實時處理的需求,而基于單片機的數據采集系統,雖然具有高可靠性及集成化等優點,但是在實時性、遠程監控及人機接口等方面存在一些不足[1].鑒于嵌入式系統具有成本低、高靈活性及功耗低等諸多優點[2],本研究采用Yocto Linux的Intel Edison嵌入式開發板作為開發環境,同時集成使用TBB線程構建模塊以最大限度地利用CPU并行運行能力,其具備的快速原型能力可加快開發過程.通過USB攝像頭對圖像進行采集,將圖像數據通過視頻服務器MJPG-Streamer傳輸到外用設備,并調用OpenCV圖像庫實現對圖像數據的保存以及后期處理.測試結果表明,本系統具有良好的實時性、高分辨率及易于拓展升級的優點,可用于遠程監控、公共場所安全管理及智能家居等相關領域.

1 系統結構設計

1.1 系統硬件平臺結構

本研究的系統硬件平臺采用Intel公司研發的AtomZ34XX系列處理器,并整合了100 MHz Quark處理器,其自帶1 GB LPDDR3 POP內存且使用4 GB eMMC作為FLASH存儲,提供40個GPIO接口,可適應3.3~4.5 V輸入電壓,輸出則支持3.3 V/100 mA、1.8 V/100 mA.系統平臺硬件的功能框圖如圖1所示.本系統硬件平臺在一般情況下電流消耗不超過200 mA,而在利用Wi-Fi傳輸數據時,峰值電流僅達600 mA,具有低功耗的特點.同時,平臺還配置了Broadcom BCM43340 Wi-Fi支持,外接u.FL射頻同軸天線以增強無線信號的接收發送能力,引出1個USB HOST接口用于連接USB攝像頭,采用1 080 P高清USB攝像頭,板載64 GB MicroSD卡.

圖1系統硬件平臺功能框圖

1.2 圖像采集傳輸與錄制設計

本系統通過USB高清攝像頭獲取圖像數據并傳送至Edison處理器,利用MJPG-Streamer實現遠程視頻監控,并通過OpenCV錄制為AVI格式的視頻文件.系統的圖像采集傳輸與錄制整體結構框圖如圖2所示.

圖2圖像采集錄制系統結構框圖

2 開發環境與配置

2.1 Yocto Project Linux內核配置與SD卡啟動方式

Yocto Project是一個開源的協作軟件,提供模板、工具和方法幫助創建定制的 Linux 系統和嵌入式產品,而無需關心硬件體系.在通過常用方式將Linux裝載在芯片eMMC上并成功啟動后,為了能給圖像數據提供大量的存儲空間,本研究利用64 GB的SD卡作為系統文件存放媒介.首先使用“mkfs.ext4”命令將SD卡分區格式化為ext4格式的文件系統,并將Yocto Linux系統鏡像目錄中的Roofts內容復制到SD中,將SD卡與測試系統連接,通過調試串口登錄嵌入式Linux系統且執行如下2條命令,

“fw-setenvmmc-bootarges'setenvbootargsroot=${myrootfs}rootdelay=3 rootfstype=ext4${bootarges-console}${bootargs-debug} system.unit=${bootargs-target}.targethardware-id={hardware-id} g-multi.iSerialNumber=${serial#} g-multi.dev-addr=${usb0addr}'”

“fwsetenvmyrootfs '/dev/mmcblk1p1”

則可以通過U-boot設置從SD卡的第1個分區加載Linux中的roofts系統.在Yocto Project中,內核配置操作與常見Linux配置稍有不同,通過“bitbake virtual/kernel-c menuconfig”調用內核配置菜單,配置Media USB Adapters目錄下的攝像頭驅動支持,并通過“bitbakeedison-image”重新編譯整個系統.將攝像頭連接至Yocto系統中,如果/dev目錄下出現video等設備文件,則代表攝像頭已被內核所識別.

2.2 圖像采集設計

Linux系統中的視頻子系統Video4Linux為視頻應用程序提供了統一的API函數.視頻應用程序通過標準的系統調用即可操縱各種不同的視頻捕獲設備[3],通過這些API函數讀取攝像頭數據,并利用mmap()內存映射方式進行單幀圖像采集,具體過程如下:

1)通過v4l-open()函數打開視頻.

int v4l-open(char *dev,v4l-device *vd)

{

if(!dev)

dev=″dev/video0″

if((vd->fd=open(dev,O-RDWR))<0)

{

perror(″camera open:″);

return -1;

}

if(v4l-get-capability(vd))

return -1;

if(v41-get-picture(vd))

return -1;

return 0;

}

2)開啟設備并成功取得設備信息后,利用v4l-get-capability()函數調用ioctl()取得設備文件相關信息,并且將信息放入video-capability結構體中,通過v4l-get-capability()函數讀取這些信息.

int v4l-get-capability(v4l-device *vd)

{

if(ioctl(vd->fd,VIDEOCGCAP,&(vd->capability))<0)

{

perror(″camera-get-capability:″);

return -1;

}

return 0;

}

3)通過v4l-get-picture()獲取并改變分量值,利用ioctl()函數獲取圖像緩沖區的幀數據并將其USB攝像頭對應的設備文件映射至內存,實現數據共享.

2.3 MJPG-Streamer移植

MJPG-Streamer是一種輕量級的視頻服務器軟件,可以從單一輸入組件獲取圖像并傳輸到多個輸出組件的命令行應用程序[4],其是基于V4L2框架所設計,能夠將讀取攝像頭圖像數據并壓縮為JPEG格式通過TCP/IP網絡傳輸并顯示,并且能夠利用Webcams的硬件壓縮功能來分擔本屬于CPU的視頻幀壓縮任務[4].該軟件采用了模塊化的設計方法,各功能模塊都放在plugins文件夾下[5].用戶可以根據自己的設計需求,自由選擇需要的模塊.這種模塊化的設計簡化了視頻服務器軟件的移植.

本研究主要應用其input-uvc及output-http組件獲取并輸出攝像頭數據,通過在Shell程序中添加如下語句啟動MJPG-Streamer.

“cd /home/mjpg-streamer”

“./mjpg-streamer -i ″./input-uvc.so -d /dev/video0 -r1280x720 -f 25″ -o″./output-http.so -p 8888 -w ./www″”

并將SH文件添加至系統啟動文件目錄即可實現MJPG-Streamer的開機自啟動.

2.4 OpenCV函數庫移植

OpenCV是由Intel公司開發且在近年來迅速普及的計算機視覺研究工具,為一種跨平臺的計算機視覺庫.在其基礎上編寫圖像處理代碼,效率可得到有效提高[6-7].為了充分利用本平臺多核處理器的并行運算能力,本研究利用Intel的TBB庫將OpenCV交叉編譯成動態鏈接庫并將其部署到Edison系統當中使用.通過在開機目錄中創建deploy文件目錄并將TBB軟件包文件中相關的所有頭文件及二進制庫文件復制到此目錄,并將SDK安裝目錄下的環境變量配置腳本的第10行修改為,

“export CC=” i589-poky-linux-gcc””

第11行修改為,

“export CXX=” i586-poky-linux-g++"”

獲取OpenCV源代碼并解壓后,在當前目錄中創建build目錄并進入,通過執行cmake命令開始進行編譯前的配置準備,

“cmake -D WITH-TBB=ON -DWITH-IPP=OFF -D WITH-CUDA=OFF -D OPENCL=OFF -D BUILD-JPEG=ON -D BUILD-SHARED-LIBS=ON -D BUILD-ZLIB=ON -D CMAKE-INSTALL-PREFIX=~/src/deploy -D TBB-INCLUDE-DIRS=/src/edison/include -D TBB-LIB-DIR=/src/deploy/lib…”

命令cmake完成編譯配置后,通過make命令進行編譯,并通過使用make install命令將其復制到之前建立的deploy目錄中,最后通過“scp”命令將所有的OpenCV動態鏈接庫文件部署到Edison系統中.在系統調試過程中可通過在PC機上調用cvCaptureFromFile函數來獲取MJPG-Streamer傳輸的視頻流數據,充分利用了交叉編譯的優勢.

程序示例如下:

#include

#include

#include ″OpenCV2/OpenCV.hpp″

#include ″highgui.h″

using namespace std;

int main()

{

CvCapture* capture = cvCaptureFromFile(″http://192.168.1.

101:8080/?action=stream?dummy=param.mjpg″);

//此處IP地址可通過ifconfig命令獲得

IplImage*Image;

cvNamedWindow(″Image″);

while(Image=cvQueryFrame(capture))

{

cvShowImage(″Image″,Image);

cvWaitKey(33);

}

cvReleaseCapture(&capture);

cvDestroyAllWindows();

return 0;

}

3 系統測試

本系統在上電啟動后,將自動通過Wi-Fi連接到無線路由器.同時,通過將USB攝像頭插入系統板(見圖3),系統將檢測到攝像頭的接入并自動啟動MJPG-Streamer客戶端程序,并通過配置的路由器將服務器映射到外網端口.此時可通過智能設備瀏覽器輸入192.168.0.101:8080進行訪問,視頻展示效果如圖4所示.同時,使用者還可以通過Winscp、filezilla等軟件查看錄制保存在SD卡上的AVI文件.測試結果表明,本系統各項功能運行流暢.

圖3 USB攝像頭連接圖

圖4智能設備訪問視頻示意圖

4 結 語

本研究基于Intel Edison利用MJPG-Streamer獲取并傳輸攝像頭數據,同時通過由TBB并行開發庫編譯的OpenCV庫保存為AVI格式視頻.Edison配備的Atom+Quark的性能遠遠超過常見的MCU,其強大的運算能力保證了本系統的穩定性與高分辨率.相比常見的基于ARM系列的圖像傳輸系統,本系統的功能更加強大.盡管本系統的成本有所增加,但卻可以快速驗證系統原型,極大縮短了開發時間.同時,本系統的設計思路也適用于一些與實時圖像處理相關的高性能產品的開發.

[1]鄭凱華,章旭東,俞立,等.基于S3C2440的圖像采集與顯示系統[J].計算機系統應用,2011,20(8):225-228.

[2]彭侃.基于ARM9的嵌入式軟件平臺的研究與實現[D].上海:東華大學,2008.

[3]張永強,趙永勇,李崇德.嵌入式遠程視頻采集系統的設計與實現[J].現代電子技術,2006,29(4):75-77.

[4]陳書益,黃永慧.開源視頻服務器軟件MJPG-Streamer的研究和應用[J].電子設計工程,2012,20(5):172-176.

[5]陳恒鑫,林威,張欽宇.基于MJPG-Streamer的移動視頻監控系統設計[J].計算機測量與控制,2014,22(11):3597-3599.

[6]梁艷.基于OpenCV的ARM嵌入式網絡視頻監控系統[J].微型機與應用,2013,32(9):29-31.

[7]蘇慧娟,于正林,張桂林.基于OpenCV的圖像處理[J].科技資訊,2014,12(8):18-19.

DesignofEmbeddedReal-timeImageCollectionTransmissionandRecordingSystemBasedonIntelEdison

ZHANGXiujun,LIUHuidong,LIJie

(School of Information Science and Engineering, Chengdu University, Chengdu 610106, China)

The embedded real-time image collection transmission and recording system based on Intel Edison and Yocto Linux is designed and implemented in this paper.The image data is collected by USB camera and transmitted through the video server MJPG-Streamer to the external mobile device.Through the OpenCV image library called by Intel Edison development board,the image data is processed and saved.The testing results show that this system has the advantages of being real-time,high-resolution,low cost,and being easy to expand and upgrade.

embedded technology;real-time;image collection;transmission;recording;Intel Edison;OpenCV;MJPG-Streamer;Video4Linux

TP391.41;TP274.2

A

1004-5422(2017)04-0390-04

2017-09-25.

張修軍(1973 — ),男,碩士,副教授,從事計算機軟件工程研究.

猜你喜歡
嵌入式攝像頭傳輸
浙江首試公路非現場執法新型攝像頭
攝像頭連接器可提供360°視角圖像
混合型隨機微分方程的傳輸不等式
牽引8K超高清傳輸時代 FIBBR Pure38K
TS系列紅外傳感器在嵌入式控制系統中的應用
關于無線電力傳輸的探究
搭建基于Qt的嵌入式開發平臺
支持長距離4K HDR傳輸 AudioQuest Pearl、 Forest、 Cinnamon HDMI線
嵌入式軟PLC在電鍍生產流程控制系統中的應用
奔馳360°攝像頭系統介紹
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合