|
stm32培訓(xùn)嵌入式_基于嵌入式Linux的視頻圖像采集與傳輸,
摘要:視頻圖像采集及處理技術(shù)在遠(yuǎn)程視頻監(jiān)控和可視電話中有著廣泛的應(yīng)用前景,驅(qū)動(dòng)視頻采集設(shè)備和獲取視頻數(shù)據(jù)并進(jìn)行相應(yīng)的處理,是實(shí)現(xiàn)這些應(yīng)用的基礎(chǔ)。針對(duì)這些應(yīng)用,構(gòu)建了一個(gè)基于嵌入式 Linux和 PXA270微處理器的視頻采集與傳輸系統(tǒng),利用 Video4Linux實(shí)現(xiàn) USB攝像頭視頻數(shù)據(jù)采集,采集的視頻數(shù)據(jù)經(jīng) JPEG壓縮后,在 PXA270為核心的系統(tǒng)控制下通過以太網(wǎng)進(jìn)行傳輸,并通過重新編譯移植 Webcam_server應(yīng)用程序?qū)崿F(xiàn)了實(shí)時(shí)視頻采集。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)動(dòng)態(tài)刷新良好,具有一定的實(shí)用性。
1 引言
視頻圖像可以對(duì)客觀事物進(jìn)行形象、生動(dòng)的描述,它是一種直觀而具體的信息表達(dá)形式,也是一種重要的信息載體。而隨著嵌入式系統(tǒng)的不斷發(fā)展,它所涉及的領(lǐng)域包括工業(yè)控制、網(wǎng)絡(luò)通信、軍事國防、航空航天等,我們所熟悉的電子產(chǎn)品幾乎都可以找到嵌入式系統(tǒng)的影子。利用嵌入式微處理器構(gòu)建的視頻圖像采集系統(tǒng) [1]具有體積小、成本低、穩(wěn)定性高等優(yōu)點(diǎn),在智能交通、計(jì)算機(jī)視覺、通信等領(lǐng)域得到了廣泛應(yīng)用。
2 系統(tǒng)平臺(tái)上的硬件系統(tǒng)與軟件系統(tǒng)
本系統(tǒng)的硬件平臺(tái)采用 Intel公司的 PXA270[2] [3]微處理器。該處理器是 Intel公司于 2004年 4月發(fā)布的面向移動(dòng)電話和掌上電腦需求,基于 Xscal架構(gòu)的 PXA27x系列處理器,最高主頻可達(dá) *MHz。PXA270最引人注目的是加入了無線多媒體擴(kuò)展技術(shù)( Wireless MMX),大大提升了多媒體處理能力;同時(shí) PXA270還加入了 Intel SpeedStep動(dòng)態(tài)電源管理技術(shù),實(shí)現(xiàn)嵌入式設(shè)備的智能電源管理。此外, PXA270具有豐富的擴(kuò)展接口: SD/SDIO/MMC、 CF/PCMCIA、CMOS/CCD CAMERA、USB2.0、KEYBOARD等。
平臺(tái)的軟件系統(tǒng)采用內(nèi)核為 Linux-2.6.18的嵌入式 Linux操作系統(tǒng)。嵌入式 Linux操作系統(tǒng)具有相當(dāng)多的優(yōu)點(diǎn),它的內(nèi)核穩(wěn)定、功能強(qiáng)大、支持多種硬件平臺(tái)、源代碼完全開放,可裁減和低成本的特性非常適合于嵌入式應(yīng)用,并且 Linux本身直接提供完整的 TCP/IP協(xié)議,可非常方便地進(jìn)行網(wǎng)絡(luò)應(yīng)用。
3 基于 Video4Linux的視頻圖像采集
在 Linux下,設(shè)備驅(qū)動(dòng)程序可以看成 Linux內(nèi)核與外部設(shè)備之間的接口。設(shè)備驅(qū)動(dòng)程序向應(yīng)用程序屏蔽了硬件具體實(shí)現(xiàn)細(xì)節(jié),使得應(yīng)用程序可以像操作普通文件一樣來操作外部設(shè)備。在 Linux下,視頻采集設(shè)備的正常使用依賴于 Video4Linux標(biāo)準(zhǔn)的支持。
Video4Linux(簡稱 V4L)是 Linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng),它為針對(duì)視頻設(shè)備的應(yīng)用程序編程提供了一系列接口函數(shù),這些視頻設(shè)備包括 TV卡、視頻捕捉卡和 USB攝像頭等。視頻采集的一般流程為:
(1)打開視頻設(shè)備;
(2)讀取設(shè)備信息;
(3)進(jìn)行視頻采集;
(4)對(duì)采集的視頻數(shù)據(jù)進(jìn)行處理和顯示;
(5)關(guān)閉視頻設(shè)備。
視頻采集主要有兩種方法:
(1)直接從設(shè)備讀。
(2)內(nèi)存映射。本系統(tǒng)采用第二種方法進(jìn)行視頻采集,其優(yōu)點(diǎn)是當(dāng)采用內(nèi)存映射時(shí),直接用 mmap()系統(tǒng)調(diào)用使得進(jìn)程之間通過映射同一個(gè)普通文件實(shí)現(xiàn)共享內(nèi)存。
普通文件被映射到進(jìn)程地址空間后,進(jìn)程可以像訪問普通內(nèi)存一樣對(duì)文件進(jìn)行訪問,不必再調(diào)用 read(),write()等操作。而且采用共享內(nèi)存通信的一個(gè)顯而易見的好處是效率高,因?yàn)檫M(jìn)程可以直接讀寫內(nèi)存,而不需要任何數(shù)據(jù)的拷貝。
采用內(nèi)存映射實(shí)現(xiàn)視頻采集的部分源代碼如下:
(1)調(diào)用 VIDIOCGBUF獲取映射的 buffer信息 ioctl(vd->fd, VIDIOCGBUF,&(vd->mbuf))
(2)將 mmap與 video_mbuf綁定 int v4l_mmap_init(v4l_device *vd) { if(v4l_get_mbuf(vd)<0) return -1; if((vd->map=mmap(0,vd->mbuf.size,PORT_READ|PORT_WRITE,
MAP_SHARED,vd->fd))<0) return -1; return 0;}
(3)進(jìn)行圖像采集前的設(shè)置 int v4l_grab_init(v4l_device *vd)
{ vd->mmap.width=640; //設(shè)置圖像窗口 vd->mmap.height=480; //窗口大小為 640×480 vd->mmap.format=VEDIO_PALETTE_YUV420P; //采樣格式為 YUV420P …}嵌入式雨擋是什么, 軟件嵌入式芯片, 嵌入式系統(tǒng)設(shè)計(jì)師證書, 嵌入式qt實(shí)戰(zhàn), 嵌入式開發(fā)板計(jì)算器, 湖北嵌入式養(yǎng)老政策, 嵌入式開發(fā)模式, 搞嵌入式遇到的問題, 嵌入式系統(tǒng)電源的選擇, 嵌入式觸摸屏維修, 學(xué)嵌入式需要什么基礎(chǔ), 嵌入式移植到pc, 嵌入式音響特點(diǎn), dsp嵌入式工程師, 嵌入式計(jì)算機(jī)用于, 嵌入式免費(fèi)軟件有哪些, 公司嵌入式崗位, 嵌入式按鍵編輯, 嵌入式面試100問, 清華嵌入式研究, 西安的嵌入式發(fā)展,
(4)調(diào)用 VIDIOCMCAPTURE開始一幀的截取 ioctl(vd->fd, VIDIOCMCAPTURE,&(vd->mmap));
(5)調(diào)用 VIDIOSYNC等待一幀截取結(jié)束
if(ioctl(vd->fd, VIDIOSYNC,&frame)<0) {perror(v4l_sync);return -1;}
該函數(shù)成功返回則表示一幀采集已完成,采集到的圖像數(shù)據(jù)放到起始地址為 vd->map+vd->mbuf.offsets[vd->frame]的內(nèi)存區(qū)中,讀取該內(nèi)存區(qū)中的數(shù)據(jù)便可得到圖像數(shù)據(jù)。接著可以做下一次的 VIDIOCMCAPTURE。
使用 V4L進(jìn)行圖像采集時(shí),可采用 “不間斷采集”的方法加快采集過程。驅(qū)動(dòng)程序要提供至少兩幀圖像大小的緩沖空間,在一幀緩沖完成之后,不管此時(shí)應(yīng)用程序有無提出新的 VIDIOCMCAPTURE請(qǐng)求,驅(qū)動(dòng)都將第二幀圖像覆蓋保存至另一個(gè)緩沖內(nèi),兩個(gè)緩沖輪流使用,不丟任何幀。
4 視頻圖像壓縮與傳輸
通過以上采集程序獲得的圖像數(shù)據(jù)為原始數(shù)據(jù),可以根據(jù)圖像采集格式將圖像信息存儲(chǔ)成文件,通過網(wǎng)絡(luò)用 webserver傳輸?shù)椒⻊?wù)器端刷新顯示。如果不對(duì)圖像進(jìn)行壓縮,則圖像數(shù)據(jù)較大,不便于在網(wǎng)絡(luò)上傳輸,這就要求系統(tǒng)首先對(duì)原始視頻圖像數(shù)據(jù)進(jìn)行壓縮處理,而通用網(wǎng)絡(luò)瀏覽器一般支持 BMP、JPG、GIF三種網(wǎng)絡(luò)圖片格式,因此本系統(tǒng)采用 JPEG壓縮方式。
JPEG是 Joint Photographic Experts Group(聯(lián)合圖像專家組)的縮寫,文件后綴名為“.jpg”或“.jpeg”,是最常用的圖像文件格式,是由一個(gè)軟件開發(fā)聯(lián)合會(huì)組織制定,是一種有損壓縮方式,能夠?qū)D像壓縮到很小的儲(chǔ)存空間。JPEG格式是目前網(wǎng)絡(luò)上最流行的圖像格式,JPEG壓縮技術(shù)十分先進(jìn),它用有損壓縮方式去除冗余的圖像數(shù)據(jù),在獲得較高的壓縮率的同時(shí)能展現(xiàn)十分豐富生動(dòng)的圖像,非常適合于視頻網(wǎng)絡(luò)傳輸。
Linux中沒有 jpeg函數(shù)庫,需要下載 jpeg src.v6b.tar.gz后,在 /usr/ src解壓安裝: cd jpeg-6b ./configure Make Make install
這樣,Linux就支持 jpeg函數(shù)庫了,在編譯器編譯連接時(shí)帶有 -l jpeg選項(xiàng)就能連接上 jpeg函數(shù)庫了。
利用下面函數(shù)將采集到的 YUV420P的原始圖像數(shù)據(jù)直接壓縮成 JPEG格式進(jìn)行傳輸:
int yuv420p_to_jpeg(char **jpeg_data, unsigned char *image, int width, int height,int quality),其中, jpeg_data 指向壓縮圖像數(shù)據(jù)指針的指針, image為采集圖像原始數(shù)據(jù),width為長度,height為高度,quality為壓縮質(zhì)量,函數(shù)的返回值為產(chǎn)生壓縮圖像數(shù)據(jù)的長度。
現(xiàn)在企事業(yè)的業(yè)務(wù)大多通過 Web技術(shù)[4]來部署實(shí)現(xiàn)。通過 Web方式主要有以下幾點(diǎn)優(yōu)勢:
(1)可以簡化界面的工作,直接使用瀏覽器界面,而瀏覽器已是計(jì)算機(jī)的必備軟件了。
(2)很容易實(shí)現(xiàn)超出局域網(wǎng)范圍的遠(yuǎn)程控制,并可以實(shí)現(xiàn)遠(yuǎn)程自動(dòng)系統(tǒng)升級(jí)。
(3)應(yīng)用層程序開發(fā)快捷,由于 Web標(biāo)準(zhǔn)的統(tǒng)一,使得開發(fā)是跨平臺(tái)的。而嵌入式系統(tǒng)性能的增強(qiáng)也使得 Web服務(wù)進(jìn)入嵌入式領(lǐng)域成為可能。 Web服務(wù)的優(yōu)勢也同樣適用于嵌入式系統(tǒng)。
webserver又被稱為 HTTP Server,它是對(duì) HTTP協(xié)議服務(wù)器端功能的實(shí)現(xiàn)。HTTP協(xié)議是架構(gòu)在 TCP/IP協(xié)議上的應(yīng)用級(jí)協(xié)議,其目的是方便和加速對(duì)分布式協(xié)同工作的超媒體信息系統(tǒng)的訪問。HTTP協(xié)議通過統(tǒng)一資源定位符(Universal Resource Location,URL)來定位分布式的超媒體信息。URL通過“通信協(xié)議+網(wǎng)絡(luò)地址”字符串來唯一標(biāo)識(shí)信息位置。如: http:///File/Images/0-9999/0/HR/2017328162140585544.jpg“ >
6 結(jié)束語
本文討論了基于 PXA270和嵌入式 Linux操作系統(tǒng)下 Web服務(wù)器中視頻圖片壓縮及其傳輸?shù)膶?shí)現(xiàn)方法,并通過移植 Webcam_server及其相應(yīng)軟件,客戶端可以完成對(duì)遠(yuǎn)程的視頻圖像的采集和動(dòng)態(tài)顯示。由于該系統(tǒng)的核心工作采用高性能嵌入式微處理器完成,因此該系統(tǒng)具有結(jié)構(gòu)簡單、性能穩(wěn)定、成本低廉等優(yōu)點(diǎn)。該技術(shù)具有通用性,應(yīng)用范圍相當(dāng)廣,可以作為簡單的安全監(jiān)控、遠(yuǎn)程現(xiàn)場監(jiān)控等應(yīng)用,同時(shí),在機(jī)器人監(jiān)控系統(tǒng)、視頻電話、遠(yuǎn)程教學(xué)等應(yīng)用中也有一定的應(yīng)用前景。
本文創(chuàng)新點(diǎn):
1 對(duì)原始采集的視頻圖像信號(hào)進(jìn)行 JPEG壓縮后,自主設(shè)計(jì) Webserver對(duì)其進(jìn)行網(wǎng)絡(luò)傳輸;
2 利用 Webcam_server分別在 Linux和 Windows操作系統(tǒng)下進(jìn)行網(wǎng)絡(luò)實(shí)時(shí)視頻采集與傳輸。
參考文獻(xiàn):
[1].PXA270datasheethttp:///datasheet/PXA270_559867.html.
[2].framedatasheethttp:///datasheet/frame_2528858.html.
最高點(diǎn) |
|