![視頻監(jiān)控程序設(shè)計說明書_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/1/1343f0a9-7479-4702-8bcb-dc5a832f6afa/1343f0a9-7479-4702-8bcb-dc5a832f6afa1.gif)
![視頻監(jiān)控程序設(shè)計說明書_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/1/1343f0a9-7479-4702-8bcb-dc5a832f6afa/1343f0a9-7479-4702-8bcb-dc5a832f6afa2.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、視頻監(jiān)控系統(tǒng)程序設(shè)計說明書1引言編寫目的本文主要說明視頻監(jiān)控系統(tǒng)的詳細設(shè)計與實現(xiàn)。本文詳細介紹了系統(tǒng)中各個模塊的設(shè)計與實現(xiàn)細節(jié)以及關(guān)鍵技術(shù)的應(yīng)用。其中,對每一個模塊會有相應(yīng)的文字說明以及相關(guān)設(shè)計流程圖給出。項目背景本項目是對本實驗課程中所介紹的課程的綜合應(yīng)用。本項目主要針對unix/linux系統(tǒng)編程和基于C+語言的GUI程序設(shè)計-QT進行針對性訓(xùn)練。旨在加強學(xué)生對unix/linux系統(tǒng)編程的理解和應(yīng)用,提高學(xué)生的實踐能力、編程能力以及分析問題和解決問題的能力。并且通過對本系統(tǒng)中客戶端的設(shè)計和實現(xiàn),讓學(xué)生體會和熟悉面向?qū)ο缶幊痰乃枷牒鸵话惴椒?。定義本系統(tǒng)=視頻監(jiān)控系統(tǒng)本文=視頻監(jiān)控系統(tǒng)設(shè)計說
2、明書2總體設(shè)計需求概述本系統(tǒng)是基于C/S架構(gòu)的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng),主要由負責(zé)圖形采集和傳輸?shù)腟erver端和負責(zé)監(jiān)控(顯示圖像)的Client端構(gòu)成。本系統(tǒng)Server端是基于Linux系統(tǒng)的網(wǎng)絡(luò)服務(wù)類軟件,主要由數(shù)據(jù)采集和網(wǎng)絡(luò)服務(wù)兩部分構(gòu)成。數(shù)據(jù)采集部分利用v4l2(videoforlinuxII)對網(wǎng)絡(luò)攝像頭進行控制和訪問并且獲取由攝像頭捕獲到的視頻數(shù)據(jù),然后再由網(wǎng)絡(luò)服務(wù)部分將獲取到的視頻數(shù)據(jù)進行封裝成http幀并利用http協(xié)議發(fā)送到客戶端。由于本系統(tǒng)Server端的數(shù)據(jù)發(fā)送是基于http協(xié)議的,所以本系統(tǒng)客戶端沒有平臺限制,只要支持以上的平臺就可以訪問本系統(tǒng)的服務(wù)。而且,本系統(tǒng)服務(wù)可以直
3、接通過web瀏覽器訪問(對firefox瀏覽器支持最佳)。為了提高傳輸效率我們還需要進行客戶端軟件的開發(fā),由于對客戶端沒有平臺要求,所在Windows、Linux、Android、等平臺都可以實現(xiàn)。本文主將以linux為例用Qt實現(xiàn)一個簡易的客戶端軟件。軟件結(jié)構(gòu)serverclientdatacapturevideoservicedevicdconfigcreateservergetdatawaitconnectmovedatadatatransfer圖視頻監(jiān)控系統(tǒng)結(jié)構(gòu)圖3程序描述Server:數(shù)據(jù)采集功能配置設(shè)備并從設(shè)備中獲取圖像數(shù)據(jù)。根據(jù)設(shè)備信息利用v4I2(videoforlinuxII
4、)通過ioctl對USB攝像頭進行配置,打開設(shè)備抓取功能開始采集并轉(zhuǎn)存數(shù)據(jù),采集完畢以后關(guān)閉設(shè)備功能,最后關(guān)閉設(shè)備。技術(shù)概要本模塊涉及到大量的對于設(shè)備的I/O操作,主要通過videoforlinuxII(v4l2)框架對設(shè)備進行設(shè)置和控制。其中包括一些特殊的結(jié)構(gòu)體屬性的賦值以及一些特殊控制標(biāo)記的實際意義需要詳細查閱V4I2提供的AP。程序邏輯本節(jié)主要以流程圖的方式介紹Server端數(shù)據(jù)采集模塊的主要程序邏輯設(shè)計。開始開始end圖Server端數(shù)據(jù)采集流程圖圖主要描述了服務(wù)端數(shù)據(jù)采集部分的主要流程和編程步驟。下面將對每一個步驟進行詳細的介紹:1打開設(shè)備:打開視頻設(shè)備(這里指我們的USB攝像頭)。
5、利用linux系統(tǒng)提供的接口函數(shù)open來對設(shè)備進行打開的操作。圖對這一過程進行了詳細的描述。2查詢設(shè)備信息(或者叫獲取設(shè)備信息):查詢設(shè)備驅(qū)動相關(guān)信息以及和視頻采集相關(guān)的參數(shù),根據(jù)獲取到的信息初步判斷設(shè)備類型以及將要處理的數(shù)據(jù)類型。利用ioctl函數(shù)以及v4l2提供的v4l2_capbility和v4l2_format兩個結(jié)構(gòu)體來保存獲取到的設(shè)備驅(qū)動信息和幀信息。詳細流程見圖。VIDIOC_G_FMT等屬性的含義需查詢V4I2提供的AP。fd=-1、ffd=open()start圖打開設(shè)備子圖2structv4l2_capabilitycapstructv4l2formatfmtw1mems
6、et(&cap,0,sizeof(cap);memset(&fmt,0,sizefo(fmt);=V4L2_BUF_TYPE_VIDEO_CAPTURE=V4L2_FIELD_ANYgetinfo:圖獲取設(shè)備信息子圖3. 設(shè)置采集方式設(shè)置視頻設(shè)備(這里指USB攝像頭)的采集方式,例如采集圖像的分辨率,幀的采集速率(既每秒采集幀的數(shù)量)等選項的設(shè)置。用到v4l2中的v4l2_format和v4l2_streamparm兩個結(jié)構(gòu)體以及VIDIOC_S_PARM口VIDIOC_SFMT兩個標(biāo)記,相關(guān)介紹請查閱v4l2框架的API信息。實現(xiàn)步驟詳見圖。/本模塊用到的宏定義#defineWIDTH320
7、structv4l2_formatfmt2#defineHEIGTH240structv4l2_streamparmparm#defineFPS5memset(&parm,0,sizeof(parm);memset(&fmt,0,sizefo(fmt);=V4L2_BUF_TYPE_VIDEO_CAPTURE=V4L2_FIELD_ANY=WIDTH圖設(shè)置采集方式子圖4. 申請緩存向驅(qū)動申請幾塊緩沖區(qū)(此處緩沖區(qū)是由內(nèi)核管理的,所以需要申請),用來存放設(shè)備采集到的數(shù)據(jù)。用到v4l2中的v4l2_requestbuffer結(jié)構(gòu)體和VIDIOC_REQBUF標(biāo)記來向設(shè)備驅(qū)動申請緩沖區(qū)。實現(xiàn)步驟詳見
8、圖structv4l2_requestbuffer3rb/本模塊用到的宏定義/表示申請緩沖區(qū)的數(shù)量#defineNB_BUFFER5memset(&rb,0,sizeof(rb);=NB_BUFFER=V4L2_BUF_TYPE_VIDEO_CAPTURE=V4L2_MEMORY_MMAPioctl(fd,VIDIOC_REQBUFS,&rb)NerrorYreturn4圖申請緩存子圖5. 設(shè)置緩存屬性對申請到的緩存進行設(shè)置,包括設(shè)置緩存的訪問方式(使用內(nèi)存映射訪問方式),對緩存進行映射,建立緩存隊列。4structv4l2_bufferbufunsignedchar*mem_listmem_
9、list=(uchar*)calloc(NB_BUFFER,sizeof(uchar);inti=0;圖設(shè)置緩存子圖5.處理數(shù)據(jù)通過對設(shè)備設(shè)置VIDIOC_STREAMO和VIDIOC_STREAMOF來控制設(shè)備開始/停止采集數(shù)據(jù),在設(shè)置開始和停止之間通過對緩存的輪換讀取獲得設(shè)備采集到的數(shù)據(jù)并對其進行處理(這里的數(shù)據(jù)處理主要做對圖像壓縮和傳輸兩部分工作會在后面做詳細介紹)。通過利用VIDIOC_QBU和VIDIOC_DQBU兩個控制位來對緩沖隊列進行入/出隊列的控制,從而獲得設(shè)備采集到的數(shù)據(jù)。詳見圖。5structv4l2_bufferbufmemset(&buf,0,sizeof(buf);
10、=V4L2_BUF_TYPE_VIDEO_CAPTURE=V4L2_MEMORY_MMAPioctl(fd,VIDIOC_STREAMON,&buf)數(shù)據(jù)處理ioctl(fd,VIDIOC_STREAMON,&buf)Nerror圖數(shù)據(jù)處理子圖Server:數(shù)據(jù)處理功能完成圖像壓縮,建立web服務(wù)供客戶端訪問。對攝像頭采集到的數(shù)據(jù)進行一次huffman編碼把圖片轉(zhuǎn)換成jpeg或者jpg格式(這個步驟也可以在客戶端完成,但是瀏覽器不支持此種實現(xiàn))。建立一個基于TCP/IP的web服務(wù)器,當(dāng)有客戶端連接本服務(wù)時利用HTTP協(xié)議發(fā)送轉(zhuǎn)換好的數(shù)據(jù)技術(shù)概要本模塊主要涉及到對原始圖像數(shù)據(jù)的壓縮以及基于C語
11、言的網(wǎng)絡(luò)和多線程的編程。關(guān)于圖像壓縮的部分在本項目中不做研究所以只是簡單的調(diào)用已有接口。對于網(wǎng)絡(luò)服務(wù)功能以及多任務(wù)的處理功能的實現(xiàn)都是本項目要涉及到的重要內(nèi)容,這里需要對基于C語言的TCP編程和多線程編程比較熟悉,可以參考UNIX環(huán)境高級編程。程序邏輯本模塊的作用實際是上一個模塊中的“數(shù)據(jù)處理”部分。由于設(shè)備采集到到的每一幀數(shù)據(jù)經(jīng)過huffman編碼以后會變成一張完整的圖片,所以我們在下面發(fā)送數(shù)據(jù)的部分要做一個簡單的封裝,下面分別給出程序流程圖(圖)和數(shù)據(jù)封裝格式(圖)。startYendContent-type:typeContent-length:length空行圖數(shù)據(jù)處理http響應(yīng)頭:
12、boundary幀頭部圖片數(shù)據(jù)boundary幀頭部圖片數(shù)據(jù)boundaryJFContent-type:typeContent-length:lengthi空行圖服務(wù)端幀封裝結(jié)構(gòu)Client:獲取數(shù)據(jù)功能向服務(wù)器發(fā)送請求,根據(jù)服務(wù)器的響應(yīng)信息接收數(shù)據(jù)并根據(jù)響應(yīng)信息按照一定的格式接收數(shù)據(jù)。與服務(wù)器建立基于TCP的連接,向服務(wù)器發(fā)送http請求,接收服務(wù)器返回的響應(yīng)信息,技術(shù)概要本模塊主要涉及到基于TCP的客戶端編程,關(guān)于各戶端編程的方法比較靈活,在語言框架選擇方面也比較廣泛,像JavaGUIMFC、QT等都可以實現(xiàn)。在這里我們QT為例來實現(xiàn)客戶端程序。程序邏輯這里主要涉及到TCP客戶端編程和對
13、服務(wù)器數(shù)據(jù)分較程式化有統(tǒng)一的編程步驟和一般流程,數(shù)據(jù)分割需要根據(jù)服務(wù)端數(shù)據(jù)發(fā)送情況的來確定。絡(luò)編程流程割,TCP客戶端的編程比TCP網(wǎng)絡(luò)編程流程(圖)和數(shù)據(jù)分割步驟(圖圖TCP網(wǎng)ocket()socket。bind()listen()I?從socket中讀取一行onnect()SERVERrecl三次握CLIENTrite()accept()ad()Nite()Yose()ose()start圖客戶端數(shù)據(jù)分割流程Client:顯示功能通過信號控制QT控件刷新圖片。我們看到連續(xù)的圖像是由一張一張的單獨的圖片不斷刷新形成的,所以本模塊主要功能是接收上一模塊的數(shù)據(jù)準(zhǔn)備好信號后將新的圖像數(shù)據(jù)加載到控件并刷新控件,從而形成連續(xù)的圖像。技術(shù)概要本模塊主要涉及到QT的編程和使用,包括對一些控件的控制和線程控制由于循環(huán)顯示圖像時候會阻塞圖形界面,所以用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)二年級數(shù)學(xué)上冊口算題
- 2024-2025年高中化學(xué)課時分層作業(yè)5元素的電負性及其變化規(guī)律含解析魯科版選修3
- 西門子油煙機指導(dǎo)書
- 2025年年度尊重生命總結(jié)報告
- 二次消防改造工程合同范本
- 海南經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院《建筑構(gòu)造Ⅰ》2023-2024學(xué)年第二學(xué)期期末試卷
- 福州科技職業(yè)技術(shù)學(xué)院《德語口譯》2023-2024學(xué)年第二學(xué)期期末試卷
- 常州信息職業(yè)技術(shù)學(xué)院《中學(xué)語文課程與教學(xué)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 宿遷學(xué)院《編譯原理》2023-2024學(xué)年第二學(xué)期期末試卷
- 烏蘭察布職業(yè)學(xué)院《建筑物理》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年度碳陶剎車盤分析報告
- 2025年1月 浙江首考英語試卷
- 十首最美的唐詩
- 2024年中考二輪專題復(fù)習(xí)道德與法治主觀題答題技巧(小論文)之演講稿
- 質(zhì)檢工作計劃書2025質(zhì)檢部工作計劃范文
- 《纏論的實戰(zhàn)技法》課件
- 新版標(biāo)準(zhǔn)化機電專業(yè)管理體系解讀課件
- 承包魚塘維修施工合同范例
- 耶魯綜合抽動嚴(yán)重程度量表正式版
- 水利水電工程建設(shè)常見事故類型及典型事故分析(標(biāo)準(zhǔn)版)
- 政府采購項目采購需求調(diào)查指引文本
評論
0/150
提交評論