視頻監(jiān)控程序設計說明書_第1頁
視頻監(jiān)控程序設計說明書_第2頁
視頻監(jiān)控程序設計說明書_第3頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、視頻監(jiān)控系統(tǒng)程序設計說明書1引言1.1編寫目的本文主要說明視頻監(jiān)控系統(tǒng)的詳細設計與實現。本文詳細介紹了系統(tǒng)中 各個模塊的設計與實現細節(jié)以及關鍵技術的應用。其中,對每一個模塊會有相 應的文字說明以及相關設計流程圖給出。1.2項目背景本項目是對本實驗課程中所介紹的課程的綜合應用。本項目主要針對unix/linux系統(tǒng)編程和基于C+語言的GUI程序設計-QT進行針對性訓練。旨在加強學生對unix/linux系統(tǒng)編程的理解和應用,提高學生的實踐能力、編程能力以及分析問題和解決問題的能力。并且通過對本 系統(tǒng)中客戶端的設計和實現,讓學生體會和熟悉面向對象編程的思想和一般方 法。1.3定義本系統(tǒng)=視頻監(jiān)控系

2、統(tǒng)本文=視頻監(jiān)控系統(tǒng)設計說明書2總體設計2.1需求概述本系統(tǒng)是基于C/S架構的網絡視頻監(jiān)控系統(tǒng),主要由負責圖形采集和傳 輸的Server端和負責監(jiān)控(顯示圖像)的 Client端構成。本系統(tǒng)Server端是基于Linux系統(tǒng)的網絡服務類軟件,主要由數據采 集和網絡服務兩部分構成。數據采集部分利用v4l2 (video for linux II)對網絡攝像頭進行控制和訪問并且獲取由攝像頭捕獲到的視頻數據,然后再由網 絡服務部分將獲取到的視頻數據進行封裝成http幀并利用http協(xié)議發(fā)送到客戶端。由于本系統(tǒng)Server端的數據發(fā)送是基于http協(xié)議的,所以本系統(tǒng)客戶 端沒有平臺限制,只要支持htt

3、p1.0以上的平臺就可以訪問本系統(tǒng)的服務。而且,本系統(tǒng)服務可以直接通過 web瀏覽器訪問(對firefox 瀏覽器支持最佳)。 為了提高傳輸效率我們還需要進行客戶端軟件的開發(fā),由于對客戶端沒有平臺 要求,所在 Win dows Li nux、An droid、等平臺都可以實現。本文主將以 linux 為例用Qt實現一個簡易的客戶端軟件。2.2軟件結構圖視頻監(jiān)控系統(tǒng)結構圖3.程序描述3.1 Server:數據采集功能配置設備并從設備中獲取圖像數據。根據設備信息利用 v4I2 (video for linux II )通過ioctl 對USB攝 像頭進行配置,打開設備抓取功能開始采集并轉存數據,采

4、集完畢以后關閉設 備功能,最后關閉設備。技術概要本模塊涉及到大量的對于設備的I/O操作,主要通過video for linux Il(v4l2)框架對設備進行設置和控制。其中包括一些特殊的結構體屬性的賦值 以及一些特殊控制標記的實際意義需要詳細查閱v4l2提供的API。程序邏輯本節(jié)主要以流程圖的方式介紹Server端數據采集模塊的主要程序邏輯設計。是圖3.1.1 Server端數據采集流程圖圖主要描述了服務端數據采集部分的主要流程和編程步驟。下面 將對每一個步驟進行詳細的介紹:1. 打開設備:打開視頻設備(這里指我們的 USB攝像頭)。利用linux系統(tǒng)提供的接 口函數open來對設備進行打開

5、的操作。圖對這一過程進行了詳細的描述。2. 查詢設備信息(或者叫獲取設備信息):查詢設備驅動相關信息以及和視頻采集相關的參數,根據獲取到的信息初步判斷設備類型以及將要處理的數據類型。利用ioctl函數以及V4I2提供的v4l2_capbility 和v4l2_format兩個結構體來保存獲取到的設備驅動信息和幀 信息。詳細流程見圖。VIDIOC_G_FMT等屬性的含義需查詢v4l2提供的API。Y圖打開設備子圖1圖獲取設備信息子圖23. 設置采集方式設置視頻設備(這里指USB攝像頭)的采集方式,例如采集圖像的分辨 率,幀的采集速率(既每秒采集幀的數量)等選項的設置。用到V4I2中的v4l2_f

6、ormat 和 v4l2_streamparm 兩個結構體以及 VIDIOC_S_PARM和 VIDIOC_SFMT兩個標記,相關介紹請查閱 v4l2框架的API信息。實現步驟詳見 圖 。4. 申請緩存向驅動申請幾塊緩沖區(qū)(此處緩沖區(qū)是由內核管理的,所以需要申請),用來存放設備采集到的數據。用到v4I2中的v4l2_requestbuffer 結構體和VIDIOC_REQBU標記來向設備驅動申請緩沖區(qū)。實現步驟詳見圖 。圖申請緩存子圖5. 設置緩存屬性對申請到的緩存進行設置,包括設置緩存的訪問方式(使用內存映射訪 問方式),對緩存進行映射,建立緩存隊列。struct v4I2 buffer b

7、uf unsigned char * memis,tmemist = (uchar *)calloc(NB_BUFFER, sizeof(uchar);int i = 0;5.處理數據通過對設備設置VIDIOC_STREAMONVIDIOC_STREAMO來控制設備開 始/停止采集數據,在設置開始和停止之間通過對緩存的輪換讀取獲得設備采集 到的數據并對其進行處理(這里的數據處理主要做對圖像壓縮和傳輸兩部分工 作會在后面做詳細介紹)。通過利用VIDIOC_QBU和VIDIOC_DQBU兩個控制位 來對緩沖隊列進行入/出隊列的控制,從而獲得設備采集到的數據。詳見圖。3.2 Server:數據處理功

8、能完成圖像壓縮,建立web服務供客戶端訪問。對攝像頭采集到的數據進行一次 huffman編碼把圖片轉換成jpeg或者 jpg格式(這個步驟也可以在客戶端完成,但是瀏覽器不支持此種實現)。建立一個基于TCP/IP的web服務器,當有客戶端連接本服務時利用 HTTP協(xié)議發(fā)送轉換好的數據。322技術概要本模塊主要涉及到對原始圖像數據的壓縮以及基于C語言的網絡和多線程的編程。關于圖像壓縮的部分在本項目中不做研究所以只是簡單的調用已有接口。 對于網絡服務功能以及多任務的處理功能的實現都是本項目要涉及到的重要內 容,這里需要對基于C語言的TCP編程和多線程編程比較熟悉,可以參考UNIX環(huán)境高級編程。程序邏

9、輯本模塊的作用實際是上一個模塊中的“數據處理”部分。由于設備采集 到到的每一幀數據經過 huffman編碼以后會變成一張完整的圖片,所以我們在 下面發(fā)送數據的部分要做一個簡單的封裝,下面分別給出程序流程圖(圖 ) 和數據封裝格式(圖3.2.2 )。圖321數據處理typelen gth空行獲取數據圖322服務端幀封裝結構3.3 Clie nt:功能向服務器發(fā)送請求, 與服務器建立基于根據服務器的響應信息接收數據。TCP的連接,向服務器發(fā)送http請求,接收服務器返回的響應信息,并根據響應信息按照一定的格式接收數據技術概要本模塊主要涉及到基于TCP的客戶端編程,關于各戶端編程的方法比較 靈活,在

10、語言框架選擇方面也比較廣泛,像 在這里我們一程序邏輯這里主要涉及到TCP客戶端編程和對服務器數據分割, 程比較程式化 送情況的來確3.3.2).QT為例來實現客戶端程序。Java GUI、MFC QT等都可以實現。TCP客戶端的編 匕有統(tǒng)一的編程步驟和一般流程,數據分割需要根據服務端數據發(fā) 甬定。下面給出 TCP網絡編程流程(圖3.3.1 )和數據分割步驟(圖SERVERCLIENT圖3.3.2 TCP網絡編程流程NY圖客戶端 數據分割流程3.4 Client:顯示功能通過信號控制QT控件刷新圖片。我們看到連續(xù)的圖像是由一張一張的單獨的圖片不斷刷新形成的,所以 本模塊主要功能是接收上一模塊的數據準備好信號后將新的圖像數據加載到控 件并刷新控件,從而形成連續(xù)的圖像。技術概要本模塊主要涉及到QT的編程和使用,包括對一些控件的控制和線程控 制。由于循環(huán)顯示圖像時候會阻塞圖形界面,所以用一個單獨的線程來完成刷 新圖像工作。對于QT相關一些知識請詳細參考QT官方提供的API。程序邏輯頁

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論