![視頻監(jiān)控程序設計說明書_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/13/002c0a48-bbf2-41f0-bac0-a415acf8b4fb/002c0a48-bbf2-41f0-bac0-a415acf8b4fb1.gif)
![視頻監(jiān)控程序設計說明書_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/13/002c0a48-bbf2-41f0-bac0-a415acf8b4fb/002c0a48-bbf2-41f0-bac0-a415acf8b4fb2.gif)
![視頻監(jiān)控程序設計說明書_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/13/002c0a48-bbf2-41f0-bac0-a415acf8b4fb/002c0a48-bbf2-41f0-bac0-a415acf8b4fb3.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、視頻監(jiān)控系統(tǒng)程序設計說明書1引言1.1編寫目的本文主要說明視頻監(jiān)控系統(tǒng)的詳細設計與實現(xiàn)。本文詳細介紹了系統(tǒng)中 各個模塊的設計與實現(xiàn)細節(jié)以及關鍵技術(shù)的應用。其中,對每一個模塊會有相 應的文字說明以及相關設計流程圖給出。1.2項目背景本項目是對本實驗課程中所介紹的課程的綜合應用。本項目主要針對unix/linux系統(tǒng)編程和基于C+語言的GUI程序設計-QT進行針對性訓練。旨在加強學生對unix/linux系統(tǒng)編程的理解和應用,提高學生的實踐能力、編程能力以及分析問題和解決問題的能力。并且通過對本 系統(tǒng)中客戶端的設計和實現(xiàn),讓學生體會和熟悉面向?qū)ο缶幊痰乃枷牒鸵话惴?法。1.3定義本系統(tǒng)=視頻監(jiān)控系
2、統(tǒng)本文=視頻監(jiān)控系統(tǒng)設計說明書2總體設計2.1需求概述本系統(tǒng)是基于C/S架構(gòu)的網(wǎng)絡視頻監(jiān)控系統(tǒng),主要由負責圖形采集和傳 輸?shù)腟erver端和負責監(jiān)控(顯示圖像)的 Client端構(gòu)成。本系統(tǒng)Server端是基于Linux系統(tǒng)的網(wǎng)絡服務類軟件,主要由數(shù)據(jù)采 集和網(wǎng)絡服務兩部分構(gòu)成。數(shù)據(jù)采集部分利用v4l2 (video for linux II)對網(wǎng)絡攝像頭進行控制和訪問并且獲取由攝像頭捕獲到的視頻數(shù)據(jù),然后再由網(wǎng) 絡服務部分將獲取到的視頻數(shù)據(jù)進行封裝成http幀并利用http協(xié)議發(fā)送到客戶端。由于本系統(tǒng)Server端的數(shù)據(jù)發(fā)送是基于http協(xié)議的,所以本系統(tǒng)客戶 端沒有平臺限制,只要支持htt
3、p1.0以上的平臺就可以訪問本系統(tǒng)的服務。而且,本系統(tǒng)服務可以直接通過 web瀏覽器訪問(對firefox 瀏覽器支持最佳)。 為了提高傳輸效率我們還需要進行客戶端軟件的開發(fā),由于對客戶端沒有平臺 要求,所在 Win dows Li nux、An droid、等平臺都可以實現(xiàn)。本文主將以 linux 為例用Qt實現(xiàn)一個簡易的客戶端軟件。2.2軟件結(jié)構(gòu)圖視頻監(jiān)控系統(tǒng)結(jié)構(gòu)圖3.程序描述3.1 Server:數(shù)據(jù)采集功能配置設備并從設備中獲取圖像數(shù)據(jù)。根據(jù)設備信息利用 v4I2 (video for linux II )通過ioctl 對USB攝 像頭進行配置,打開設備抓取功能開始采集并轉(zhuǎn)存數(shù)據(jù),采
4、集完畢以后關閉設 備功能,最后關閉設備。技術(shù)概要本模塊涉及到大量的對于設備的I/O操作,主要通過video for linux Il(v4l2)框架對設備進行設置和控制。其中包括一些特殊的結(jié)構(gòu)體屬性的賦值 以及一些特殊控制標記的實際意義需要詳細查閱v4l2提供的API。程序邏輯本節(jié)主要以流程圖的方式介紹Server端數(shù)據(jù)采集模塊的主要程序邏輯設計。是圖3.1.1 Server端數(shù)據(jù)采集流程圖圖主要描述了服務端數(shù)據(jù)采集部分的主要流程和編程步驟。下面 將對每一個步驟進行詳細的介紹:1. 打開設備:打開視頻設備(這里指我們的 USB攝像頭)。利用linux系統(tǒng)提供的接 口函數(shù)open來對設備進行打開
5、的操作。圖對這一過程進行了詳細的描述。2. 查詢設備信息(或者叫獲取設備信息):查詢設備驅(qū)動相關信息以及和視頻采集相關的參數(shù),根據(jù)獲取到的信息初步判斷設備類型以及將要處理的數(shù)據(jù)類型。利用ioctl函數(shù)以及V4I2提供的v4l2_capbility 和v4l2_format兩個結(jié)構(gòu)體來保存獲取到的設備驅(qū)動信息和幀 信息。詳細流程見圖。VIDIOC_G_FMT等屬性的含義需查詢v4l2提供的API。Y圖打開設備子圖1圖獲取設備信息子圖23. 設置采集方式設置視頻設備(這里指USB攝像頭)的采集方式,例如采集圖像的分辨 率,幀的采集速率(既每秒采集幀的數(shù)量)等選項的設置。用到V4I2中的v4l2_f
6、ormat 和 v4l2_streamparm 兩個結(jié)構(gòu)體以及 VIDIOC_S_PARM和 VIDIOC_SFMT兩個標記,相關介紹請查閱 v4l2框架的API信息。實現(xiàn)步驟詳見 圖 。4. 申請緩存向驅(qū)動申請幾塊緩沖區(qū)(此處緩沖區(qū)是由內(nèi)核管理的,所以需要申請),用來存放設備采集到的數(shù)據(jù)。用到v4I2中的v4l2_requestbuffer 結(jié)構(gòu)體和VIDIOC_REQBU標記來向設備驅(qū)動申請緩沖區(qū)。實現(xiàn)步驟詳見圖 。圖申請緩存子圖5. 設置緩存屬性對申請到的緩存進行設置,包括設置緩存的訪問方式(使用內(nèi)存映射訪 問方式),對緩存進行映射,建立緩存隊列。struct v4I2 buffer b
7、uf unsigned char * memis,tmemist = (uchar *)calloc(NB_BUFFER, sizeof(uchar);int i = 0;5.處理數(shù)據(jù)通過對設備設置VIDIOC_STREAMONVIDIOC_STREAMO來控制設備開 始/停止采集數(shù)據(jù),在設置開始和停止之間通過對緩存的輪換讀取獲得設備采集 到的數(shù)據(jù)并對其進行處理(這里的數(shù)據(jù)處理主要做對圖像壓縮和傳輸兩部分工 作會在后面做詳細介紹)。通過利用VIDIOC_QBU和VIDIOC_DQBU兩個控制位 來對緩沖隊列進行入/出隊列的控制,從而獲得設備采集到的數(shù)據(jù)。詳見圖。3.2 Server:數(shù)據(jù)處理功
8、能完成圖像壓縮,建立web服務供客戶端訪問。對攝像頭采集到的數(shù)據(jù)進行一次 huffman編碼把圖片轉(zhuǎn)換成jpeg或者 jpg格式(這個步驟也可以在客戶端完成,但是瀏覽器不支持此種實現(xiàn))。建立一個基于TCP/IP的web服務器,當有客戶端連接本服務時利用 HTTP協(xié)議發(fā)送轉(zhuǎn)換好的數(shù)據(jù)。322技術(shù)概要本模塊主要涉及到對原始圖像數(shù)據(jù)的壓縮以及基于C語言的網(wǎng)絡和多線程的編程。關于圖像壓縮的部分在本項目中不做研究所以只是簡單的調(diào)用已有接口。 對于網(wǎng)絡服務功能以及多任務的處理功能的實現(xiàn)都是本項目要涉及到的重要內(nèi) 容,這里需要對基于C語言的TCP編程和多線程編程比較熟悉,可以參考UNIX環(huán)境高級編程。程序邏
9、輯本模塊的作用實際是上一個模塊中的“數(shù)據(jù)處理”部分。由于設備采集 到到的每一幀數(shù)據(jù)經(jīng)過 huffman編碼以后會變成一張完整的圖片,所以我們在 下面發(fā)送數(shù)據(jù)的部分要做一個簡單的封裝,下面分別給出程序流程圖(圖 ) 和數(shù)據(jù)封裝格式(圖3.2.2 )。圖321數(shù)據(jù)處理typelen gth空行獲取數(shù)據(jù)圖322服務端幀封裝結(jié)構(gòu)3.3 Clie nt:功能向服務器發(fā)送請求, 與服務器建立基于根據(jù)服務器的響應信息接收數(shù)據(jù)。TCP的連接,向服務器發(fā)送http請求,接收服務器返回的響應信息,并根據(jù)響應信息按照一定的格式接收數(shù)據(jù)技術(shù)概要本模塊主要涉及到基于TCP的客戶端編程,關于各戶端編程的方法比較 靈活,在
10、語言框架選擇方面也比較廣泛,像 在這里我們一程序邏輯這里主要涉及到TCP客戶端編程和對服務器數(shù)據(jù)分割, 程比較程式化 送情況的來確3.3.2).QT為例來實現(xiàn)客戶端程序。Java GUI、MFC QT等都可以實現(xiàn)。TCP客戶端的編 匕有統(tǒng)一的編程步驟和一般流程,數(shù)據(jù)分割需要根據(jù)服務端數(shù)據(jù)發(fā) 甬定。下面給出 TCP網(wǎng)絡編程流程(圖3.3.1 )和數(shù)據(jù)分割步驟(圖SERVERCLIENT圖3.3.2 TCP網(wǎng)絡編程流程NY圖客戶端 數(shù)據(jù)分割流程3.4 Client:顯示功能通過信號控制QT控件刷新圖片。我們看到連續(xù)的圖像是由一張一張的單獨的圖片不斷刷新形成的,所以 本模塊主要功能是接收上一模塊的數(shù)據(jù)準備好信號后將新的圖像數(shù)據(jù)加載到控 件并刷新控件,從而形成連續(xù)的圖像。技術(shù)概要本模塊主要涉及到QT的編程和使用,包括對一些控件的控制和線程控 制。由于循環(huán)顯示圖像時候會阻塞圖形界面,所以用一個單獨的線程來完成刷 新圖像工作。對于QT相關一些知識請詳細參考QT官方提供的API。程序邏輯頁
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小商品批發(fā)市場建設項目可行性實施報告
- 延安職業(yè)技術(shù)學院《建筑評析》2023-2024學年第二學期期末試卷
- 武漢警官職業(yè)學院《高聚物制備工程》2023-2024學年第二學期期末試卷
- 2025年紅砂巖荔枝面行業(yè)深度研究分析報告
- 電子雜志與虛擬現(xiàn)實技術(shù)的融合
- 請假條申請書
- 2025年中國利巴韋林滴眼液行業(yè)發(fā)展運行現(xiàn)狀及投資潛力預測報告
- 自立自強申請書
- 協(xié)議離職申請書
- 電子商務中的網(wǎng)絡媒體廣告投放策略研究
- 物理學家伽利略課件
- 2024上海申康醫(yī)院發(fā)展中心招聘2人高頻難、易錯點500題模擬試題附帶答案詳解
- 《氣排球》教學大綱
- 市政道路監(jiān)理大綱34368
- 北師大版二年級數(shù)學下冊教材分析
- 國際工程項目管理課件
- 珠海市政工程竣工檔案驗收指南(試行上)
- 2024年廣東省廣州市中考英語試卷附答案
- 2024年春九年級化學下冊 第九單元 溶液教案 (新版)新人教版
- 良性前列腺增生癥患者圍手術(shù)期的護理
- DL∕T 1610-2016 變電站機器人巡檢系統(tǒng)通 用技術(shù)條件
評論
0/150
提交評論