摘 要:目前嵌入式技術(shù)隨著物聯(lián)網(wǎng)行業(yè)的突飛猛進(jìn)發(fā)展而得到了快速普及,嵌入式關(guān)鍵技術(shù)之一的GUI技術(shù)(Graphical User Interface圖形用戶界面)也得到了快速發(fā)展,而QT作為嵌入式GUI技術(shù)中主流的技術(shù)平臺(tái)更是得到了廣泛認(rèn)可,而OpenCV技術(shù)的出現(xiàn)使得QT在視頻處理方面更加專業(yè)。
關(guān)鍵詞:嵌入式;GUI;QT;OpenCV
中圖分類號(hào):TP368.1
1 目前主流的嵌入式GUI
GUI技術(shù)是嵌入式的關(guān)鍵技術(shù)之一,其直接關(guān)系到產(chǎn)品的界面友好性程度,最終影響到產(chǎn)品的競(jìng)爭(zhēng)力。
目前主流的嵌入式GUI主要有以下幾種:
Microwindows的體系結(jié)構(gòu)由上至下,分別為API層、圖形引擎層、驅(qū)動(dòng)層、硬件層,用戶可以根據(jù)具體的應(yīng)用需求來(lái)實(shí)現(xiàn)每一個(gè)層。
MiniGUI的實(shí)現(xiàn)主要依賴于標(biāo)準(zhǔn)C的庫(kù)函數(shù),它可以任意在支持標(biāo)準(zhǔn)C的環(huán)境上運(yùn)行,MiniGUI很小巧但也很高效。MiniGUI主要應(yīng)用在一些中低端設(shè)備中。
2 QT的搭建
由于QT具有跨平臺(tái)的特性,所以一般開(kāi)發(fā)可以在windows下開(kāi)發(fā),再移植到Linux中,本文重點(diǎn)介紹QT在Windows下的使用。
QT的開(kāi)發(fā)環(huán)境包括以下幾部分:QT的GUI庫(kù),QT creator,windows版本還包含編譯器,可以是Microsoft visual stdio c++,還可以是MinGW,本文中使用的是MinGW。
搭建QT開(kāi)發(fā)環(huán)境包括以下幾部分:(1)下載安裝MinGW編譯器,該編譯器支持Gcc和G++。(2)下載安裝qt-creator-win-opensource。(3)為QT、MinGW、qmake添加環(huán)境變量。
3 OpenCV的安裝配置
3.1 OpenCV簡(jiǎn)介。QT中本身也支持視頻處理,但功能十分有限,如果需要更強(qiáng)大的視頻處理功能,需要引入OpenCV(open source computer vision library),即開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù)。
3.2 OpenCV的優(yōu)點(diǎn):(1)開(kāi)源。OpenCV完全遵循BSD協(xié)議(五大開(kāi)源許可協(xié)議之一),具有極高的開(kāi)放性。(2)跨平臺(tái)。OpenCV支持Windows、Linux,Mac,可以輕松實(shí)現(xiàn)平臺(tái)之間的移植。(3)效率高,速度快。由于OpenCV采用C++實(shí)現(xiàn),并且算法經(jīng)過(guò)優(yōu)化,效率有較大程度的提高,執(zhí)行的速度也比較快。(4)涵蓋面廣、功能強(qiáng)大。OpenCV主要有13個(gè)模塊構(gòu)成,涵蓋了計(jì)算機(jī)視覺(jué)的各個(gè)方面,在相關(guān)方面基本都應(yīng)用。
3.3 OpenCV的安裝配置:(1)前提是QT已經(jīng)安裝配置成功。(2)下載OpenCV。下載OpenCV后,解壓即可,實(shí)際上并不需要安裝,注意解壓路徑不能有空格,否則會(huì)出錯(cuò)。(3)下載安裝CMake。OpenCV只是一個(gè)庫(kù),并不能直接拿來(lái)使用,需要借助CMake將其編譯后才可以使用。(4)配置CMake參數(shù),進(jìn)行編譯。使用CMake,主要是設(shè)定OpenCV的輸入路徑、輸出路徑、MinGW的位置等相關(guān)信息。運(yùn)行CMake之后,需要在命令提示符下進(jìn)入輸出路徑,然后執(zhí)行mingw32-make命令,由MinGW對(duì)OpenCV進(jìn)行編譯,其間會(huì)耗費(fèi)一定的時(shí)間。此步驟成功后,再執(zhí)行mingw32-make install命令,會(huì)把編譯好的所有文放到這個(gè)文件夾下,這個(gè)就是將來(lái)開(kāi)發(fā)要用到的OpenCV全部文件。(5)將上一步驟得到的install目錄bin文件夾,添加到系統(tǒng)的環(huán)境變量中,重新啟動(dòng)電腦。(6)在QT工程中,打開(kāi).pro工程屬性文件,將OpenCV添加到INCLUDEPATH和LIBS中后,就可以在QT開(kāi)發(fā)中使用OpenCV計(jì)算機(jī)視覺(jué)庫(kù)了。
4 在QT中通過(guò)OpenCV實(shí)現(xiàn)視頻處理
4.1 實(shí)現(xiàn)的基本原理。在視頻處理中主要用到OpenCV的highgui模塊,該模塊,前面已說(shuō)過(guò),主要完成視頻捕捉、編碼,圖片處理等相關(guān)功能。
highgui模塊中已經(jīng)封裝了視頻、圖像、窗口的所有操作。
首先,利用OpenCV建立窗口,然后打開(kāi)攝像頭,獲取攝像頭中的幀,然后申請(qǐng)IplImage類型的指針,將幀放入指針指向的內(nèi)存空間,此時(shí)的只是靜止的圖像而已,為了符合我們?nèi)搜鄣挠^看習(xí)慣,再通過(guò)循環(huán),達(dá)到每秒鐘顯示30次左右的效果,與放電影的原理基本一樣,最終顯示到窗口,看到就是動(dòng)態(tài)的視頻效果,使用完之后釋放內(nèi)存,釋放窗口即可。
5 總結(jié)
嵌入式技術(shù)在當(dāng)前的大環(huán)境下得到了快速發(fā)展,隨著硬件設(shè)備性能的不斷提高,高性能的嵌入式程序會(huì)越來(lái)越廣泛地被使用,而QT恰好與這個(gè)大環(huán)境相吻合,同時(shí)OpenCV的出現(xiàn)對(duì)QT也是一個(gè)促進(jìn),QT+OpenCV模式在未來(lái)嵌入式視頻處理中會(huì)廣泛地被使用。
參考文獻(xiàn):
[1]彭均鍵,史步海,劉洋.基于Qt的嵌入式GUI開(kāi)發(fā)平臺(tái)的搭建[J].微型電腦應(yīng)用,2010,2.
[2]郭暉,陳光.基于OpenCV的視頻圖像處理應(yīng)用研究[J].微型機(jī)與應(yīng)用,2010,21.
[3]秦小文,溫志芳,喬維維.基于OpenCV的圖像處理[J].電子測(cè)試,2011-7.
[4]許生模,余敏.嵌入式QT的內(nèi)核分析與優(yōu)化[J].微計(jì)算機(jī)信息,2007-10.
[5]陳峰,郭爽,趙欣.基于QT和嵌入式的視頻監(jiān)控系統(tǒng)[J].通信技術(shù),2011,10.
作者簡(jiǎn)介:徐廣宇(1978-),男,呼倫貝爾人,軟件工程碩士,計(jì)算機(jī)信息管理學(xué)院教師,研究方向:軟件設(shè)計(jì)理論與應(yīng)用開(kāi)發(fā)。
作者單位:內(nèi)蒙古財(cái)經(jīng)大學(xué),呼和浩特 010051