freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于linux、qt的視頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)論文(已改無錯字)

2023-07-23 01:22:34 本頁面
  

【正文】 結(jié)構(gòu)體v4l2_capbility和v4l2_format來保存獲取到的USB攝像頭設(shè)備驅(qū)動信息和數(shù)據(jù)幀信息。詳細(xì)流程如下圖(圖4)所示。VIDIOC_G_FMT、VIDIOC_S_FMT等需要通過查閱v4l2提供的API來理解具體意義。FD = 1建立結(jié)構(gòu)體:獲取設(shè)備驅(qū)動信息 cap獲取視頻數(shù)據(jù)幀信息 fmtmemset(amp。cap, 0, sizeof(cap));memset(amp。fmt, 0, sizeof(fmt));在結(jié)構(gòu)體中設(shè)置添加類型用ioctl()函數(shù)以及v4l2中提供的兩個結(jié)構(gòu)體v4l2_capbility和v4l2_format來保存獲取到的視頻設(shè)備驅(qū)動信息和視頻數(shù)據(jù)幀信息Errorreturn error ?get info:獲取信息FD = 2圖4 查詢視頻設(shè)備信息流程圖3) 設(shè)置USB攝像頭采集方式:設(shè)置USB攝像頭(視頻設(shè)備)的視頻采集方式,例如視頻數(shù)據(jù)幀的采集速率(即每秒鐘采集到的視頻幀數(shù)量)、采集圖像的分辨率等一些參數(shù)的設(shè)置。用到v4l2中的v4l2_streamparm和v4l2_format兩個結(jié)構(gòu)體以及VIDIOC_S_PARM和VIDIOC_S_FMT兩個宏,相關(guān)用法的介紹請詳細(xì)查閱v4l2框架的API文檔。具體實現(xiàn)方法參照下圖(圖5)。FD = 2該模塊中所用到的宏定義:define WIDTH 16的整數(shù)倍define HEIGTH 16的整數(shù)倍define fps 5(緩存的張數(shù)設(shè)置)引用的結(jié)構(gòu)體:struct v4l2_formatstruct v4l2_streamparm初始化結(jié)構(gòu)體斷言設(shè)置struct v4l2_formatstruct v4l2_streamparm用 memset()對結(jié)構(gòu)體:struct v4l2_formatstruct v4l2_streamparm內(nèi)容進行初始化設(shè)置。使用函數(shù)ioctl()對當(dāng)前的驅(qū)動視頻捕獲格式進行設(shè)置errorreturn error ?return 返回參數(shù)進入緩存:4圖5 設(shè)置視頻采集方式流程圖4) 向驅(qū)動申請緩存向內(nèi)核驅(qū)動申請幾塊緩沖區(qū)(此緩沖區(qū)是由內(nèi)核管理的,所以需要向內(nèi)核申請),用來存放USB攝像頭設(shè)備采集的視頻數(shù)據(jù)。從內(nèi)核中申請緩存用到v4l2編程中的結(jié)構(gòu)體v4l2_requestbuffer和宏定義VIDIOC_REQBUFS。具體的實現(xiàn)方法參照下圖(圖6)。本模塊用到的宏定義有define NB_BUFFER 5表示申請緩沖區(qū)數(shù)量傳返回參數(shù) 3struct v4l2_requestbuffer rb調(diào)用結(jié)構(gòu)體 rb斷言:作用初始化結(jié)構(gòu)體 rb設(shè)置結(jié)構(gòu)體的屬性和初值創(chuàng)建申請緩沖區(qū),用函數(shù):ioctl()errorreturn error ?return傳返回參數(shù) 4圖6 申請緩沖區(qū)流程圖5) 設(shè)置緩沖區(qū)屬性緩存申請到了后,對申請到的緩存進行必要的設(shè)置。其實緩沖區(qū)的設(shè)置是很重要的,因為緩存的作用在傳輸數(shù)據(jù)上占有舉足輕重的地位,他是CPU和內(nèi)存的中間產(chǎn)物,緩存指的是臨時文件交換區(qū),電腦經(jīng)常把常用的文件從存儲器里提取出來存放到臨時緩存里面。還要設(shè)置緩存的訪問方式以及使用內(nèi)存映射的訪問方式,對緩存進行映射,并建立緩存隊列。具體設(shè)置方法如下圖(圖7)所示。傳返回參數(shù)4在接收到參數(shù)時,聲明結(jié)構(gòu)體,區(qū)別名為 buf在堆區(qū)用calloc()函數(shù)開辟內(nèi)存并且定義一個整型變量 i ;賦初值為 0Noi NB_BUFFER ?Yes對結(jié)構(gòu)體進行初始化建立內(nèi)存映射:mem_list[ i ] = mmap( )在開辟的緩存空間內(nèi)建立內(nèi)存映射區(qū)域并且建立緩存隊列YesNo error ?Noerrorreturnreturn 5圖7 緩沖區(qū)設(shè)置流程圖 6) 視頻圖像采集到的數(shù)據(jù)處理 設(shè)置視頻設(shè)備屬性時,需要用到這兩個宏定義VIDIOC_STREAMON和VIDIOC_STREAMOFF。通過對視頻設(shè)備進行設(shè)置VIDIOC_STREAMON和VIDIOC_STREAMOFF來控制視頻設(shè)備的開始和停止采集數(shù)據(jù),在設(shè)置開始和停止中間通過對緩存的輪換讀取來獲得視頻設(shè)備采集到的視頻數(shù)據(jù)并對其進行數(shù)據(jù)處理(這里說的數(shù)據(jù)處理主要書對圖像進行壓縮(也就是進行huffman編碼)和傳輸兩個部分,具體的處理方式在后面做詳細(xì)介紹)。獲得視頻設(shè)備采集到的數(shù)據(jù)需要調(diào)用VIDIOC_QBUF和VIDIOC_DQBUF兩個宏定義來控制對緩沖隊列進行進/出隊操作。詳見下圖(圖8)。傳返回參數(shù) 5進入enable()函數(shù)里,聲明兩個變量,type和ret進行初始化,ret = ioctl(fd, VIDIOC_STREAMON, amp。type)接下來進行視頻數(shù)據(jù)的采集對視頻設(shè)備采集到的視頻數(shù)據(jù)進行壓縮編碼處理,采用huffman編碼將數(shù)據(jù)壓縮以后,開始進行數(shù)據(jù)傳輸,傳輸?shù)臅r候要進入緩存隊列,然后進行傳輸,開始在客戶端進行讀取隊列。讀取完隊列后,進行解碼(反編碼),然后就能得到視頻數(shù)據(jù)。在整個過程中,圖像數(shù)據(jù)處理很重要,用到的函數(shù)有ioctl()。圖8 視頻數(shù)據(jù)處理流程圖 服務(wù)器:數(shù)據(jù)處理 模塊功能描述完成圖像壓縮、編碼、封裝。在此需要設(shè)計web服務(wù)器端程序,有的是用QT界面設(shè)計編程來建立的,并且建立web服務(wù)器以供客戶端進行訪問。對從攝像頭設(shè)備采集到的視頻數(shù)據(jù)進行一次huffman編碼,把圖片轉(zhuǎn)換成jpeg或者jpg格式的。這個步驟也可以在客戶端完成,但是考慮到瀏覽器不支持這項操作。為了實現(xiàn)C/S架構(gòu)的同時,也支持B/S架構(gòu),我們就在服務(wù)器端進行這些數(shù)據(jù)的處理。建立一個基于TCP/IP協(xié)議的web服務(wù)器,當(dāng)有客戶端進行連接服務(wù)器時采用HTTP協(xié)議的網(wǎng)絡(luò)發(fā)送經(jīng)過處理后的視頻數(shù)據(jù)幀,這些數(shù)據(jù)已經(jīng)經(jīng)過HTTP協(xié)議進行了封裝。 技術(shù)概要這一模塊主要涉及到對原始圖像數(shù)據(jù)進行的壓縮編碼以及基于C語言的網(wǎng)絡(luò)和多線程的編程。關(guān)于視頻的壓縮編碼部分在視頻監(jiān)控系統(tǒng)的設(shè)計中只是簡單的調(diào)用現(xiàn)有接口(API),不做需要深入的研究。視頻監(jiān)控系統(tǒng)通過對基于C語言的socket網(wǎng)絡(luò)編程和多線程編程熟悉,可以參考《UNIX環(huán)境高級編程》中的網(wǎng)絡(luò)編程部分,就可以實現(xiàn)網(wǎng)絡(luò)服務(wù)器的功能以及多任務(wù)的處理功能。 邏輯概要及程序流程圖這一模塊的作用實際上是上一個模塊中提到的“數(shù)據(jù)處理”部分。由于視頻設(shè)備采集到的每一幀視頻數(shù)據(jù)經(jīng)過了huffman編碼以后都會變成一張完整的圖片,所以我們在下面發(fā)送視頻數(shù)據(jù)的傳輸部分需要做一個簡單的數(shù)據(jù)封裝,下面分別給出了程序流程圖(圖9)和數(shù)據(jù)封裝格式(圖10)。在這個模塊中功能的實現(xiàn)是可以參照一下圖示進行程序的編寫,這里已經(jīng)給出了模塊的設(shè)計框架。圖9 服務(wù)器端數(shù)據(jù)處理流程圖圖10 服務(wù)器端數(shù)據(jù)幀封裝結(jié)構(gòu)圖 客戶端:數(shù)據(jù)獲取 模塊功能描述客戶端獲取視頻數(shù)據(jù),主要利用socket連接方式獲取??蛻舳耸紫认蚍?wù)器端發(fā)送視頻數(shù)據(jù)請求,根據(jù)服務(wù)器端的響應(yīng)信息,從而可以接收視頻數(shù)據(jù)??蛻舳伺c服務(wù)器端需要建立網(wǎng)絡(luò)連接必須要進行了“三次握手”,才連接成功,然后視頻監(jiān)控系統(tǒng)的客戶端向服務(wù)器端發(fā)送視頻數(shù)據(jù)。客戶端與服務(wù)器建立TCP連接,向服務(wù)器發(fā)送了請求,接收服務(wù)器返回的響應(yīng)信息,并且根據(jù)響應(yīng)信息按照一定的格式進行數(shù)據(jù)的接收,接收到數(shù)據(jù)后還要根據(jù)服務(wù)器端數(shù)據(jù)幀的封裝結(jié)構(gòu),將有效數(shù)據(jù)(既視頻數(shù)據(jù)幀)提取出來,然后就能夠?qū)⑻崛〕鰜淼囊曨l數(shù)據(jù)渲染出來。 技術(shù)概要客戶端獲取數(shù)據(jù)模塊主要涉及到基于TCP/IP協(xié)議的客戶端編
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1