• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Qt和OpenCV的無線視頻監(jiān)控系統(tǒng)

      2015-10-20 02:39:18中國科學(xué)技術(shù)大學(xué)電子科學(xué)與技術(shù)系安徽合肥230027
      關(guān)鍵詞:頭像人臉客戶端

      汪 洋,李 垚,黃 魯(中國科學(xué)技術(shù)大學(xué) 電子科學(xué)與技術(shù)系,安徽 合肥 230027)

      基于Qt和OpenCV的無線視頻監(jiān)控系統(tǒng)

      汪洋,李垚,黃魯
      (中國科學(xué)技術(shù)大學(xué)電子科學(xué)與技術(shù)系,安徽合肥230027)

      使用Qt結(jié)合OpenCV設(shè)計了一款基于嵌入式的無線視頻監(jiān)控系統(tǒng),該系統(tǒng)具備人臉檢測和頭像保存功能。系統(tǒng)采用C/S結(jié)構(gòu),在ARM開發(fā)板上搭建的Qt多線程Linux系統(tǒng)服務(wù)器用于采集和發(fā)送視頻;用Qt結(jié)合OpenCV制作的客戶端運行在PC上,提供監(jiān)控功能。介紹了Qt的Linux系統(tǒng)環(huán)境設(shè)置與ARM移植、V4L2視頻采集的過程以及如何用Qt多線程處理視頻數(shù)據(jù)。測試結(jié)果表明,在WiFi環(huán)境下,系統(tǒng)可進(jìn)行有效的實時監(jiān)控。

      無線視頻監(jiān)控;Qt;OpenCV;人臉檢測

      0 引言

      無線視頻監(jiān)控系統(tǒng)具有無需布線、安裝簡單、監(jiān)控點靈活的優(yōu)點。嵌入式監(jiān)控設(shè)備占用空間小、價格低。Linux操作系統(tǒng)可裁剪,適合在嵌入式設(shè)備上使用[1]。本文在ARM-Linux系統(tǒng)上利用Qt和OpenCV技術(shù),結(jié)合TCP/IP傳輸協(xié)議,開發(fā)了一款帶有圖像處理功能的低成本實時無線視頻監(jiān)控系統(tǒng),具備人臉檢測和頭像保存功能。

      1 系統(tǒng)結(jié)構(gòu)

      無線視頻監(jiān)控系統(tǒng)由ARM服務(wù)器、PC客戶端和無線路由器3個部分組成,如圖1所示。ARM服務(wù)器設(shè)置USB攝像頭的采集參數(shù),將采集到的畫面進(jìn)行格式轉(zhuǎn)換后(YUV轉(zhuǎn)換成JPEG),通過USB無線網(wǎng)卡將視頻畫面發(fā)送出去;無線路由器為ARM服務(wù)器與遠(yuǎn)程PC客戶端提供無線網(wǎng)絡(luò);PC客戶端接收并顯示視頻,完成人臉檢測、頭像保存等處理。

      圖1 系統(tǒng)總體結(jié)構(gòu)

      本系統(tǒng)的服務(wù)器硬件由友善之臂Smart210開發(fā)板、EP-N8508GS無線網(wǎng)卡和USB攝像頭組成。其中,Smart210開發(fā)板采用了三星S5PV210作為主處理器;EP-N8508GS無線網(wǎng)卡支持IEEE802.11N網(wǎng)絡(luò)標(biāo)準(zhǔn),傳輸速率為150Mb/s;USB攝像頭支持V4L2協(xié)議,采集視頻格式為YUV。軟件部分主要包括內(nèi)核為3.0的Linux操作系統(tǒng)、Qt4.7、OpenCV2.4相關(guān)庫、客戶端和服務(wù)器軟件。系統(tǒng)軟件結(jié)構(gòu)如圖2所示。

      圖2 系統(tǒng)軟件結(jié)構(gòu)

      2 服務(wù)器實現(xiàn)

      2.1Linux QT環(huán)境設(shè)置與ARM移植

      本系統(tǒng)軟件編程采用C/S模式,程序在PC Ubuntu環(huán)境下用Qt 4.7編寫完成,分別用ARM、PC環(huán)境下的qmake編譯器編譯成可執(zhí)行程序。如果統(tǒng)一采用PC環(huán)境下的qmake編譯,服務(wù)器程序?qū)o法在ARM上運行。這是由于ARM與PC的開發(fā)環(huán)境不同,可使用file指令來判斷可執(zhí)行程序的運行環(huán)境。Linux ARM版本的Qt環(huán)境配置流程如圖3所示。

      圖3 Linux ARM版的QT環(huán)境設(shè)置

      在完成Linux ARM版本的Qt環(huán)境配置后,還需要將生成的Qt庫都加載到ARM開發(fā)板上才能在ARM上運行Qt程序,否則出現(xiàn)缺少依賴庫的錯誤。

      2.2服務(wù)器軟件設(shè)計

      ARM服務(wù)器軟件采用Qt編程,實現(xiàn)的功能有V4L2視頻采集、視頻格式轉(zhuǎn)換、TCP視頻傳輸。服務(wù)器的工作流程為:先啟動監(jiān)聽狀態(tài),給出當(dāng)前使用的IP地址和監(jiān)聽的隨機(jī)可用端口號提示;當(dāng)客戶端連接上時發(fā)送視頻數(shù)據(jù)。

      2.2.1V4L2(Video4Linux2)視頻圖像采集

      V4L2是Linux下針對免驅(qū)動USB設(shè)備的編程框架,為視頻采集設(shè)備的程序開發(fā)提供了統(tǒng)一的接口[2]。視頻采集部分基于V4L2,將其定義為一個單獨的videoDevice類,實現(xiàn)視頻設(shè)備的初始化、打開、配置、設(shè)置內(nèi)存映射、開始采集、讀取緩沖區(qū)、視頻格式轉(zhuǎn)換、更新緩沖區(qū)、結(jié)束采集、取消內(nèi)存映射、關(guān)閉、格式轉(zhuǎn)換等功能。該類還定義了專門的槽函數(shù),為后續(xù)的設(shè)備視頻采集線程提供RGB24視頻幀。

      2.2.2多線程處理視頻數(shù)據(jù)

      采用多線程可以提高程序的響應(yīng)速度,在Qt應(yīng)用程序中使用多線程只需子類化Qthread并且重新實現(xiàn)它的run()函數(shù)即可[3]。程序采用雙線程,一個用于單幀圖像的周期性采集并發(fā)送完成信號,另一個利用私有槽函數(shù)完成單幀圖像的發(fā)送,兩個線程在tcpServer類中進(jìn)行連接,從而實現(xiàn)視頻的連續(xù)采集與傳輸。在采集視頻線程run()函數(shù)中,每隔一定時間獲取視頻幀并發(fā)送數(shù)據(jù)產(chǎn)生信號。視頻發(fā)送線程采用基于塊的傳輸協(xié)議把視頻數(shù)據(jù)作為二進(jìn)制塊進(jìn)行傳輸,每個數(shù)據(jù)塊包含一個大小字段及單幀視頻數(shù)據(jù)。在該線程中,將采集并經(jīng)轉(zhuǎn)化后得到的RGB24格式視頻圖像以JPG格式存入緩沖區(qū)發(fā)送;發(fā)送完成后,需要調(diào)用seek(0)函數(shù)以重新移到存儲空間的開始處,避免出錯。

      2.2.3基于TCP的視頻傳輸

      TCP是面向連接的通信協(xié)議,提供可靠的數(shù)據(jù)流服務(wù),從而確保視頻的有效傳輸。Qt提供的QTcpServer和QTcpSocket類,分別用于實現(xiàn)服務(wù)器和客戶端[4]。

      服務(wù)器視頻傳輸程序主要由tcpServer和tcp-ClientSocket類完成。tcpServer重新實現(xiàn)了incomingConnection()函數(shù)。當(dāng)客戶端試圖連接到服務(wù)器監(jiān)聽的端口時,調(diào)用該函數(shù)來創(chuàng)建視頻采集和發(fā)送線程,并通過信號與槽將兩個線程連接起來,從而實現(xiàn)視頻幀的采集與發(fā)送。tcpClientSocket類利用connect()函數(shù)將readRead()和disconnected()信號分別與readClient()和slotDisconnected()槽連接起來,從而接收來自客戶端的數(shù)據(jù),以及當(dāng)套接字連接關(guān)閉時,刪除對象。

      3 客戶端實現(xiàn)

      客戶端軟件設(shè)計采用Qt與OpenCV聯(lián)合編程,Qt用于界面設(shè)計、視頻接收與顯示,OpenCV專注于對視頻圖像進(jìn)行處理??蛻舳藢崿F(xiàn)的功能有:(1)登錄功能;(2)連接服務(wù)器并接收視頻;(3)彩色與灰度視頻切換顯示;(4)拍照保存、人臉檢測、頭像保存功能。為了使用OpenCV,需要在Qt工程文件中添加 OpenCV的庫文件和路徑。由于使用了網(wǎng)絡(luò)傳輸協(xié)議,需要在Qt工程文件中添加QT+=network代碼。

      3.1視頻接收與彩色/灰度顯示

      客戶端啟動后,填入設(shè)備名、IP地址、服務(wù)器監(jiān)聽的端口號來連接服務(wù)器。程序使用槽函數(shù)將客戶端連接到服務(wù)器,該槽函數(shù)在QTcpSocket對象上異步調(diào)用connectToHost()建立連接。當(dāng)連接建立起來并運行時,QTcpSocket對象發(fā)送connected()信號,此時會執(zhí)行sendData()槽函數(shù)將數(shù)據(jù)發(fā)給服務(wù)器;如果連接失敗,QTcpSocket對象會發(fā)送錯誤信號。只要QTcpsocket對象從服務(wù)器上接收到視頻數(shù)據(jù),就發(fā)送readReady信號,此時程序調(diào)用dataReceived()槽函數(shù)。dataReceived()槽函數(shù)實現(xiàn)了3個功能:接收視頻幀、統(tǒng)計每幀的數(shù)據(jù)量與總的幀數(shù)以及用判斷語句來選擇顯示彩色/灰度視頻。

      3.2人臉檢測與頭像保存

      人臉檢測使用OpenCV提供的檢測圖像中的目標(biāo)函數(shù)cvHaarDetectObjects()和"haarcascade_frontalface_alt.xml"人臉檢測分類器對視頻流中的某幅圖像進(jìn)行搜索,從而確定圖像中是否含有人臉并計數(shù)人臉數(shù)量。本功能啟用后,會加載Haar檢測分類器并分配資源,在圖像格式轉(zhuǎn)換后進(jìn)行人臉檢測與頭像保存。

      圖4、5分別顯示了人臉檢測與頭像保存的流程。通過目標(biāo)函數(shù)調(diào)用人臉檢測分類器在視頻圖像中找到包含人臉的矩形區(qū)域,用不同的顏色標(biāo)識后返回矩形框序列[5]。頭像保存是在人臉檢測的基礎(chǔ)上用cvSetImageROI()標(biāo)識出頭像區(qū)域,之后截取保存。

      圖5 頭像保存流程

      4 系統(tǒng)測試

      在PC上編譯服務(wù)器與客戶端程序,通過串口將服務(wù)器可執(zhí)行程序下載到ARM開發(fā)板上。在串口調(diào)試助手SecureCRT上輸入掃描和連接WiFi的指令,并進(jìn)行ping測試。確認(rèn)WiFi環(huán)境可用后,在ARM上運行服務(wù)器程序,PC上運行客戶端程序,測試結(jié)果如圖6所示。

      圖6 系統(tǒng)測試

      5 結(jié)論

      本文介紹了一種基于Qt和OpenCV的嵌入式無線視頻監(jiān)控系統(tǒng)。經(jīng)過測試,該系統(tǒng)達(dá)到了預(yù)期的效果,實現(xiàn)了無線實時監(jiān)控,其人臉檢測與頭像保存功能增強(qiáng)了監(jiān)控的能力,解決了常規(guī)監(jiān)控系統(tǒng)只顯示畫面不能對畫面進(jìn)行處理的問題。此外,系統(tǒng)性能穩(wěn)定,成本低廉,具有廣泛的應(yīng)用前景。

      [1]馬毅.基于Linux的遠(yuǎn)程視頻監(jiān)控嵌入式系統(tǒng)的設(shè)計與實現(xiàn)[D].上海:上海交通大學(xué),2001.

      [2]周寶余,臧雪柏.基于QT的無線多路視頻監(jiān)控系統(tǒng)[J].吉林大學(xué)學(xué)報(工學(xué)版),2011,41(增刊):204-207.

      [3]BLANCHETTE J,SUMMERFIELD M.C++GUI programming with Qt4(Second Edition)[M].NJ:Prentice Hall in association with Trolltech Press,2008.

      [4]陳峰,郭爽,趙欣.基于Qt和嵌入式的視頻監(jiān)控系統(tǒng)[J].通信技術(shù),2011,44(10):109-111.

      [5]BRADSKI G,KAEHLER A.Learning OpenCV:computer vision with the OpenCV library(First Edition)[M].CA:O′Reilly Media Inc,2008.

      Wireless video monitoring system based on Qt and OpenCV

      Wang Yang,Li Yao,Huang Lu
      (Department of Electronic Science and Technology,University of Science and Technology of China,Hefei 230027,China)

      An embeded wireless video monitoring system with the functions of face detecton and head portraits saving was designed by using Qt coupling with OpenCV in this paper.The system adopted C/S structure.Multi-threaded Linux system server was built with Qt on ARM development board for acquisition and transmission of video data.The client was made with Qt and OpenCV running on the PC,to provide monitoring function.And it also introduced the Linux system environment setting for Qt with Qt transplanting to ARM,the process of V4L2 video acqusition and how to do multi-threaded video data processing by using Qt.The test results show that under WiFi environment,the system carries out real-time monitoring effectively.

      wireless video surveillance;Qt;OpenCV;face detection

      TP391.4

      A

      1674-7720(2015)10-0067-03

      2014-12-31)

      汪洋(1991-),男,碩士研究生,主要研究方向:嵌入式系統(tǒng)、機(jī)器人。

      李垚(1968-),男,副研究員,主要研究方向:電路與系統(tǒng)。

      黃魯(1961-),男,副教授,主要研究方向:電路與系統(tǒng)。

      猜你喜歡
      頭像人臉客戶端
      有特點的人臉
      可愛的卡通頭像
      童話世界(2019年29期)2019-11-23 09:05:22
      三國漫——人臉解鎖
      動漫星空(2018年9期)2018-10-26 01:17:14
      縣級臺在突發(fā)事件報道中如何應(yīng)用手機(jī)客戶端
      傳媒評論(2018年4期)2018-06-27 08:20:24
      孵化垂直頻道:新聞客戶端新策略
      傳媒評論(2018年4期)2018-06-27 08:20:16
      基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
      電子測試(2018年10期)2018-06-26 05:53:34
      用鑰匙畫頭像
      馬面部與人臉相似度驚人
      長得象人臉的十種動物
      奇聞怪事(2014年5期)2014-05-13 21:43:01
      客戶端空間數(shù)據(jù)緩存策略
      拉萨市| 宜川县| 德江县| 广昌县| 肇源县| 饶平县| 成安县| 马关县| 武川县| 开江县| 来凤县| 伊川县| 年辖:市辖区| 湄潭县| 靖江市| 呼玛县| 逊克县| 砀山县| 格尔木市| 兰州市| 孝义市| 仁怀市| 两当县| 景谷| 东兴市| 东宁县| 嘉义县| 雷山县| 读书| 屯昌县| 陵水| 瓦房店市| 彭州市| 成都市| 襄汾县| 延庆县| 青田县| 呈贡县| 镇赉县| 万载县| 惠水县|