999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于嵌入式Linux的視頻監控系統的設計

2008-12-31 00:00:00郭麥成許建國
電腦知識與技術 2008年34期

摘要:介紹了一種網絡視頻監控系統實現方案, 系統以嵌入式Linux和基于Xscale架構的PXA255處理器為核心平臺,通過嵌入式平臺將攝像頭采集來的視頻信號,經過網絡傳輸給服務器, 完成對考試現場的網絡視頻監控任務。詳細介紹了嵌入式平臺上USB設備的驅動開發以及嵌入式Linux下應用程序的設計。

關鍵詞:Linux;視頻監控;USB攝像頭

中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)34-1788-02

Design of Video Surveillance System Based on Embedded Linux

SUN Jian1, GUO Mai-cheng1, XU Jian-guo2

(1.Computer Science College of Yangtze University, Jingzhou 434023, China;2.Technology Engineering College of Yangtze University, Jingzhou 434023, China)

Abstract: A network video sureillance system based on embedded Linux is presented in this paper. The system adopt embedded Linux and micro-processor PXA255 based on Xscale architecture, the platform can capture video signal form the USB camera and then transport the signal to the server through Internet. The driver development of USB devices and the application program of the embedded systems also presented in details.

Key words: Linux; video sureillance; USB camera

1 引言

近年來,隨著電子信息技術和計算機網絡技術的發展,我國監控系統建設在技術水平和實際應用等方面都取得了長足的進步,在社會眾多領域得到了廣泛的應用。

為提高國家教育考試的管理效能,給國家教育考試的安全運行以充分的技術保證,教育部考試中心提出建立“國家教育考試網上巡查系統”,建立覆蓋全國各級考試機構和考點的視音頻監控網絡,實現考試過程和保密室的監控指揮。本文在此基礎上設計的基于Linux的視頻監控系統把經過攝像頭采集到的圖像數據進行壓縮后,通過網絡協議棧打包發送到服務器上,因此用戶可以通過因特網從客戶端觀看到該設備采集的圖像。該系統一方面可以在Internet上傳輸圖像數據,基本上不受距離限制,無須重新布線,便于安裝,維護;另一方面采用的嵌入式技術解決了傳統單片機處理和傳輸圖像大數據速度過慢,flash存儲量小,不能夠實現圖像采集的實時更新的問題。

2 系統整體結構

本文的視頻監控系統由USB攝像頭、PXA255平臺、服務器和客戶端組成,整體結構如圖1所示。開發板采用基于Xscale架構的PXA255處理器來構建,并采用Linux操作系統進行開發,服務器端采用普通PC機,二者通過網絡協議實現連接。開發板通過USB攝像頭采集視頻信號,然后通過視頻編碼器將信號數字化,將所采集到的數據壓縮后通過局域網傳遞給服務器。服務器用來接收開發板發來的圖像數據,為用戶提供實時的查看功能。開發板主要完成包括系統初始化、音視頻采集、音視頻壓縮、音視頻發送等模塊。服務器作為總的控制中心,接收開發板發來的圖像信息并發出控制信號,并采用B/S結構為用戶提供Web瀏覽服務,用戶可以通過瀏覽器即可看到USB攝像頭采集到的實時圖像。本文將主要描述開發板的USB驅動的開發和基于Qt的顯示程序的設計。

3 嵌入式Linux下USB驅動的開發

由于PXA255上的USB驅動程序是OHCI HCD的實現,而通常Linux OHCI驅動的所有工作都是在drivers/usb/usb_ohci.c和drivers/usb/usb_ohci.h中實現的。因此這里也采用類似的命名方式,系統中USB在drivers/usb/usb_ohci_pxa.c和drivers/usb/usb_ohci_pxa.h中實現。由于PXA255的USB主機控制器不包含PCI接口,因而本USB主機控制器驅動程序省去了與PCI接口相關的代碼。

USB設備類驅動程序需要提供兩個數據結構接口,一個針對USBD層,一個針對文件系統。攝像頭驅動程序需要做的第一件事情就是在USB子系統里注冊,并提供一些相關信息。如這個驅動程序支持哪種設備,當被支持的設備從總線插入或拔出時,會有哪些動作。所有這些信息以數據結構cam301p_driver的形式傳送到USB子系統中。在cam301p.c驅動程序中是這樣來表示的:

static struct usb_driver cam301p_driver={

name: \"cam301p\",

fops:usb_cam301p_fops,

probe: cam301p_probe,

disconnect cam301p_disconnect};

其中,變量name是一個字符串,它對驅動程序進行描述。probe和disconnect是函數指針,僅當設備與在id_table中的信息匹配時,函數起作用。

V4L(Video for Linux)是Linux操作系統上處理圖象的標準軟件接口。它能夠支持圖象的采集、輸出和控制。V4L作為Linux內核中的一個接口函數庫,是一個強大的視頻軟件處理庫,能夠采集多種格式的靜止圖象,Linux下的許多視頻應用軟件都是基于它設計實現的。

將以上的usb驅動程序拷貝到文件系統的目錄Linux-2.4.18/drivers/usb下,同時重新配置Linux-2.4.18內核的視頻設置選項。對于驅動程序的編譯,主要是通過Makefile文件來實現的,下面是這個驅動程序Makefile文件關系:

cam301p.o: cam301p.c cam301p.h cam301p_decomp.c

arm-linux-gcc -DMODULE –D_KERNEL_-O cam301p.o -C cam301p.c

通過內核的重新編譯,在makc menuconfig中使能Video4Linux支持選項和USB支持選項,可以得到程序的模塊加載文件cam301p.o。

對于驅動程序的使用方法,與一般的驅動程序的使用方法相同,可以使用內核自動加載的方法來編譯程序,則在接入攝像頭設備后,系統將會自動地對攝像頭設備進行識別。

4 嵌入式Linux系統顯示程序的設計

關于圖像在Qt用戶接口界面上的顯示程序,本文主要實現了圖像的采集功能、圖像的存儲功能,以及存儲在Flash上的圖像再現功能。所以在Qt圖形界面上,本文也實現了圖像的采集、存儲、打開以及應用程序的退出的文件按鈕。具體的程序分為兩部分,一部分是主程序的應用,另一部分是用戶接口程序的實現,即采集應用功能、存儲功能和文件打開功能程序的具體實現。

4.1 函數主程序的實現

int main (int argc, char **argv)

{QApplication app(argc, argv);

Guiimage_draw(0,\"image_draw\",FALSE,Qt::WStyle_Customize|Qt::WStyle_Noporde);

app.setMainWidget(image_draw);

image_draw.show();

app.connect(app,SIGNAL(lastWindowClosed()),app, SLOT(quit()))

return app.exec();}

幾乎在所有使用Qt的情況下,main()只需要執行一些初始化,就將控制轉交給Qt庫,然后由Qt庫通過事件來向程序告知用戶的行為。main函數中的參數arg是命令行變量的數量,argv是命令行變量的數組,這是一個C/C++特征。

QApplication app(argc,argv)中app是這個程序的QApplication在這里被創建,并且處理這些命令行變量(比如在X窗口下的顯示)。請注意,所有被Qt識別的命令行參數都會從argv中被移除(并且argc也因此而減少)。需要注意的是,在Qt的窗口系統部件被使用之前,創建QApplication對象是必須的。

在QApplication之后,接著的是第一個窗口系統代碼,一個按鈕被創建了。代碼app.setMainWidget(image_draw)將這個按鈕選為這個應用程序的主窗口部件。如果用戶關閉了主窗口部件,應用程序就退出了。

當創建一個窗口部件的時候,它是不可見的。必須調用show()來使它變為可見的。所以在程序中使用image_draw.show()來實現顯示的功能。

return app.exec()是main()把控制轉交給Qt,當應用程序退出的時候exec()就會返回。當最后一個窗口被關閉,應用程序應該退出,使用app.connect(app, SIGNAL(lasLWindowClosed()),app, SLOT(quit()))來實現。在exec()中,Qt接受并處理用戶和系統的事件并且把它們傳遞給適當的窗口部件。

4.2 圖像顯示程序的實現

本文在Qt界面上,實現圖像的顯示通過函數capture()來實現的。我們通過打開設備文件“/dev/video0”來進行讀取,讀取圖片函數為get_image()。讀取圖片后,為了在顯示屏上顯示自定義高度和寬度的圖片,需要對圖片的數據進行轉換,并存為32位寬的數據格式,并通過函數QImage()實現。最后,可以將顯示的圖片保存或直接退出應用程序。

函數get_image()實現具體的圖像采集,該函數主要通過ioctl方式來實現。在該函數中,首先通過ioctl(dev, VIDIOCGMBUF, vid_buf)獲得內存buffer的信息,進行內存映射。然后通過函數ioctl(dev, VIDIOCMCAPTURE, vid_mmap)進行圖像的拍攝,以及函數ioctl(dev, VIDIOCSYNC, vid mmap.frame)等待圖片拍攝的結束,實現圖像的采集工作。

在本系統的Qt界面應用程序中,還實現對采集的圖片在Flash上的保存操作,以及從Flash中保存的圖片進行打開的操作,對于保存操作,首先打開當前的默認目錄,然后輸入需要保存的文件名,通過函數getCurrentImage()獲得當前的圖片,并進行保存。

對于文件的打開,通過函數getOpenFileName()獲得需要打開的目錄下的文件,然后分配一塊內存空間,將保存在Flash上的圖片通過flstkGui->addFile()顯示出來。

5 結束語

本文主要闡述了基于Linux的視頻監控系統的設計,將USB攝像頭作為視頻監控系統的終端,以嵌入式平臺為基礎,將采集到的圖像數據通過網絡傳輸至遠程服務器,并利用Web瀏覽器完成用戶與系統的交互,具有結構簡單、易于擴展等特點。

參考文獻:

[1] 陳章龍.嵌入式技術與系統——IntelXScale結構與開發[M].北京:北京航天航空大學出版社,2004.

[2] 張倩等.基于嵌入式Linux的視頻監控系統[J].天津工業大學學報,2007,4(2):65-68.

[3] 楊穎等.基于USB攝像頭的嵌入式遠程視頻監控系統[J].安防科技,2007(3):24-26.

主站蜘蛛池模板: 中美日韩在线网免费毛片视频| 国产综合亚洲欧洲区精品无码| 欧美无专区| 免费一看一级毛片| 国产区在线看| 日本精品一在线观看视频| 67194亚洲无码| 久久夜色撩人精品国产| 99国产精品免费观看视频| 亚洲精品第一在线观看视频| 九色免费视频| 精品国产Ⅴ无码大片在线观看81 | 久久综合婷婷| 日本国产精品一区久久久| 亚洲人在线| 国产亚洲现在一区二区中文| 日本人真淫视频一区二区三区| 在线免费看片a| 日韩黄色在线| 99久久亚洲综合精品TS| 国产一级裸网站| 国产成年女人特黄特色大片免费| 日本人妻丰满熟妇区| 91毛片网| 99爱视频精品免视看| 国产乱人免费视频| 免费a在线观看播放| 精品无码国产一区二区三区AV| 亚洲精品视频网| 巨熟乳波霸若妻中文观看免费| 91精品久久久无码中文字幕vr| 亚洲三级色| 被公侵犯人妻少妇一区二区三区| 国产美女91视频| 91福利免费视频| 亚洲人成在线免费观看| 日本三级精品| 四虎影视库国产精品一区| 免费一看一级毛片| 99热国产这里只有精品无卡顿"| 亚洲欧美日韩久久精品| 国产剧情国内精品原创| 91精品国产麻豆国产自产在线| 在线免费无码视频| 欧美成人看片一区二区三区| 91成人免费观看| 成人免费一区二区三区| 91偷拍一区| 成人久久精品一区二区三区| a色毛片免费视频| 亚洲欧美极品| 久久亚洲中文字幕精品一区| 久久久噜噜噜久久中文字幕色伊伊| 午夜国产大片免费观看| 国产黄色片在线看| 午夜视频日本| 亚洲无码视频喷水| 东京热一区二区三区无码视频| 亚洲第一黄片大全| 男女男精品视频| 国产一级在线播放| 国产av色站网站| 国产在线观看91精品| 午夜毛片免费观看视频 | 茄子视频毛片免费观看| 久久亚洲国产视频| 国产三级精品三级在线观看| 日韩中文精品亚洲第三区| 中文字幕人妻无码系列第三区| 国产成人AV男人的天堂| av在线手机播放| 国产精品v欧美| 中文字幕va| 香蕉eeww99国产精选播放| 国产91精品久久| 欧美国产日韩在线播放| 亚洲第一色视频| 亚洲成在线观看| 女人18毛片一级毛片在线 | 亚洲第一黄色网| 亚洲人网站| 谁有在线观看日韩亚洲最新视频|