欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種提高文件拍攝流暢性的方法及系統(tǒng)的制作方法_2

文檔序號:9397539閱讀:來源:國知局
指定的窗口中在前視頻圖像和再后視頻圖像均為I幀數(shù)據(jù)。
[0038]所述幀處理單元中,幀處理后執(zhí)行掛起操作,所述間隔時(shí)間包括該掛起的時(shí)間。
[0039]所述幀處理單元中,如果在單位時(shí)間內(nèi)從攝像頭獲取的視頻圖像幀數(shù)大于幀處理的視頻圖像幀數(shù),則執(zhí)行丟幀操作,所述丟幀操作為將多余部分不進(jìn)行幀處理以及渲染而直接釋放,所述多余部分為在單位時(shí)間內(nèi)從攝像頭獲取的視頻圖像幀與幀處理的視頻圖像幀相減后的視頻圖像幀。
[0040]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:
[0041]1、通過將渲染的幀數(shù)據(jù)和通過攝像頭獲取的幀數(shù)據(jù)的速率進(jìn)行分離,刷新較快時(shí)幀進(jìn)行重復(fù)使用,可以在界面操作頻繁的時(shí)候設(shè)置較大的渲染速度,讓繪圖或者批注的操作相對流暢,提供了更好的用戶體驗(yàn)。
[0042]2、通過異步渲染的方式使得幀處理的邏輯和渲染的邏輯分別運(yùn)行在不同的兩個(gè)線程當(dāng)中,比原來兩個(gè)邏輯都在同一個(gè)線程當(dāng)中進(jìn)行流水式的操作效率更好,也提高了用戶的體驗(yàn)度。
[0043]3、在每次幀處理后執(zhí)行掛起(通過sle印函數(shù)實(shí)現(xiàn))操作,這樣既可以降低CPU的使用率,也可以控制幀率。
[0044]4、在人眼分辨不出的情況下,通過適當(dāng)丟幀的操作,進(jìn)一步提高流暢度。
【附圖說明】
[0045]圖1為本發(fā)明一種提高文件拍攝流暢性的方法的流程圖。
【具體實(shí)施方式】
[0046]下面結(jié)合【具體實(shí)施方式】對本發(fā)明作進(jìn)一步的說明。
[0047]請參照圖1所示,一種提高文件拍攝流暢性的方法,其包括以下步驟:
[0048]步驟1、圖像掃描
[0049]通過攝像頭對文件進(jìn)行圖像掃描,獲取所述文件的在前視頻圖像。例如通過CMOS (Complementary Metal Oxie Semiconductor)鏡頭對待掃描的文件進(jìn)行圖像掃描,也即拍攝,從而獲取所述文件的視頻圖像。同時(shí),根據(jù)實(shí)際需要,可通過麥克風(fēng)捕獲文件拍攝現(xiàn)場的音頻信息,音頻信息的處理過程與視頻圖像的處理過程相似,這里僅以視頻圖像進(jìn)行詳細(xì)的說明。這種拍攝式掃描的方式對掃描文件的介質(zhì)沒有要求,而且可實(shí)現(xiàn)對普通平面文件及書籍等立體文件的掃描。將首次掃描獲取的文件的視頻圖像定義為在前視頻圖像,以與在后掃描獲取的視頻圖像進(jìn)行區(qū)分。
[0050]步驟2、圖像采集和存儲
[0051]采集所述在前視頻圖像,并將所述在前視頻圖像以及采集該在前視頻圖像的時(shí)間存儲到存儲單元中,存儲單元為在內(nèi)存中創(chuàng)建;視頻圖像通過視頻采集卡進(jìn)行采集,然后再由視頻采集過濾器(Video Capture Filter)從視頻采集卡中獲得視頻圖像數(shù)據(jù)流進(jìn)行解碼。解碼后的視頻圖像直接存儲到存儲單元中,這樣幀處理即可直接從存儲單元中調(diào)取。
[0052]步驟3、創(chuàng)建幀處理線程
[0053]為了實(shí)現(xiàn)異步渲染,將原本只有一個(gè)線程實(shí)現(xiàn)幀處理和渲染的過程,分割成由獨(dú)立的幀處理線程實(shí)現(xiàn)幀處理過程以及由獨(dú)立的渲染隊(duì)列處理線程實(shí)現(xiàn)渲染過程,幀處理過程的幀數(shù)據(jù)(視頻圖像,開始為在前視頻圖像)來自于存儲單元,幀處理后的幀數(shù)據(jù)在儲存到渲染隊(duì)列中,渲染隊(duì)列處理線程只針對渲染隊(duì)列中的幀數(shù)據(jù)進(jìn)行渲染。創(chuàng)建幀處理線程以及渲染隊(duì)列處理線程只執(zhí)行一次,之后的各種操作時(shí)忽略這兩個(gè)步驟。
[0054]步驟4、幀處理
[0055]幀處理是通過幀處理線程讀取攝像頭采集的幀數(shù)據(jù)并轉(zhuǎn)換成開源計(jì)算機(jī)圖像庫(Open Source Computer Vis1nibrary,OpenCV)圖像,并將該圖像送入每個(gè)自定義的過濾器(Filter)中進(jìn)行處理,過濾器是基于DirectShow創(chuàng)建的組件對象模型(C0M),執(zhí)行一些多媒體流的操作,如繪圖、批注等。過濾器的種類有很多,不同種類的過濾器相互連接在一起就形成了過濾器圖表。同時(shí),幀處理過程還包括通過開源計(jì)算機(jī)圖像庫對視頻圖像進(jìn)行的處理包括如視頻繪圖、視頻的旋轉(zhuǎn)、圖像的糾偏、圖像的自動(dòng)捕捉與拍照、圖像的自動(dòng)去黑邊、剪切等,高效率的實(shí)現(xiàn)了視頻圖像的實(shí)時(shí)處理。
[0056]在幀處理過程中,為了控制幀率和CPU的使用率,在線程中每處理完一幀都調(diào)用了 sleep函數(shù)執(zhí)行掛起操作,這樣即可以降低了 cpu的使用率,也可以控制幀率。
[0057]步驟5、創(chuàng)建渲染隊(duì)列
[0058]由于在圖像處理的時(shí)候引入了開源計(jì)算機(jī)圖像庫,這無疑簡化了圖像處理的難度,也降低了代碼的復(fù)雜度。但同時(shí)也帶來了一個(gè)問題,就是在渲染的時(shí)候OpenCV的圖像不能直接顯示到屏幕上,而是要先經(jīng)過轉(zhuǎn)換,把OpenCV的圖像轉(zhuǎn)化為hbitmap (位圖句柄)對象,即轉(zhuǎn)換成適應(yīng)于位塊轉(zhuǎn)換方式的位圖句柄圖像(位圖句柄圖像是通過位圖句柄對OpenCV的圖像進(jìn)行相應(yīng)的編碼形成的圖像),然后通過bitblt (位塊轉(zhuǎn)換)的方式進(jìn)行圖像的顯示。圖像轉(zhuǎn)換是相當(dāng)損耗CPU的性能的,同時(shí)bitblt的渲染由于沒有通過硬件加速,渲染的效率就比較低了,這樣當(dāng)幀數(shù)據(jù)經(jīng)過幀處理到渲染整個(gè)過程所需要的時(shí)間就長了,這個(gè)流暢的時(shí)間長度直接影響了用戶的體驗(yàn),界面會出現(xiàn)反應(yīng)慢的現(xiàn)象。
[0059]在渲染模塊啟動(dòng)的時(shí)候,即幀處理完成后,創(chuàng)建一個(gè)有別于幀處理線程的渲染隊(duì)列處理線程和一個(gè)對渲染隊(duì)列處理線程相對應(yīng)的渲染隊(duì)列,渲染隊(duì)列處理線程只調(diào)用渲染隊(duì)列中的視頻圖像進(jìn)行渲染操作,同時(shí),渲染隊(duì)列是在內(nèi)存中創(chuàng)建。
[0060]步驟6、將幀處理后的在前視頻圖像壓入到所述渲染隊(duì)列中,使得渲染隊(duì)列處理線程只處理該壓入到所述渲染隊(duì)列中的視頻圖像
[0061]步驟7、渲染隊(duì)列檢測
[0062]通過渲染隊(duì)列處理線程實(shí)時(shí)檢測所述渲染隊(duì)列中是否存在在前視頻圖像,如果存在,則進(jìn)行渲染和顯示,反之,如果未有壓入的視頻圖像,而渲染的時(shí)間又小于時(shí)間間隔,則渲染隊(duì)列處理線程繼續(xù)將之前渲染過的視頻圖像再次渲染并顯示。
[0063]步驟8、渲染和顯示
[0064]通過渲染隊(duì)列處理線程對該在前視頻圖像進(jìn)行渲染后使其顯示在用戶指定的窗口中。渲染的時(shí)候先把OpenCV的圖像轉(zhuǎn)化為hbitmap對象,即轉(zhuǎn)換成適應(yīng)于位塊轉(zhuǎn)換方式的位圖句柄圖像,然后通過bitblt的方式進(jìn)行圖像的顯示。
[0065]步驟9、比較渲染的時(shí)間與攝像頭采集在前視頻圖像和在后視頻圖像的時(shí)間間隔之間的關(guān)系
[0066]如果渲染在前視頻圖像(該在前視頻圖像經(jīng)過幀處理后會存儲到渲染隊(duì)列中)的時(shí)間小于間隔時(shí)間,則繼續(xù)執(zhí)行步驟8,即是將原來通過渲染隊(duì)列處理線程對該在前視頻圖像進(jìn)行渲染后使其顯示在用戶指定的窗口中的步驟重復(fù)一次。
[0067]步驟10,文件再掃描,獲取在后視頻圖像
[0068]如果渲染在前視頻圖像的時(shí)間小于間隔時(shí)間,則對文件進(jìn)行再次圖像掃描,獲取所述文件的在后視頻圖像,并將該在后視頻圖像依次執(zhí)行步驟2、4、6、7的操作(此時(shí),將步驟2、4、6、7中的在前視頻圖像改成再后視頻圖像即可)。即當(dāng)在前視頻圖像渲染完后要判斷現(xiàn)在的時(shí)間是否到了可以從攝像頭獲取下一幀視頻圖像(即在后視頻圖像)的時(shí)間間隔,這里的時(shí)間間隔是指攝像頭采集在后視頻圖像的時(shí)間與采集在前視頻圖像的時(shí)間之差,如果幀處理過程中設(shè)定了掛起操作,則包括該掛起時(shí)間,如果還沒到,但是已經(jīng)到了要渲染下一幀的時(shí)間了,這時(shí)候,這一個(gè)要渲染的幀不再通過攝像頭獲取,而是直接讀取存儲單元中的在前視頻圖像;但是當(dāng)走到步驟8中發(fā)現(xiàn)如果渲染存儲到渲染隊(duì)列中的在前視頻圖像的時(shí)間(這個(gè)時(shí)間理應(yīng)包括壓入渲染隊(duì)列中的時(shí)間)已經(jīng)足夠可以從攝像頭獲取下一幀視頻圖像的時(shí)候,到了必須要通過攝像頭獲取下一幀數(shù)據(jù)的時(shí)候(如果不在攝像頭獲取,而是長時(shí)間通過存儲單元獲取,會導(dǎo)致界面看到的圖像數(shù)據(jù)延時(shí)比較嚴(yán)重),就通過攝像頭獲取幀數(shù)據(jù)并同樣的把這一幀數(shù)據(jù)和獲取這幀數(shù)據(jù)的時(shí)間在存儲單元中保存起來,然后對該在后視頻圖像的處理方式與在前視頻圖像的處理方式相同,對待后續(xù)每一幀視頻圖像均采用該方式。
[0069]這樣做,刷新(渲染)較快時(shí)候在前視頻
當(dāng)前第2頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
岳普湖县| 涟水县| 盐池县| 丹寨县| 凤翔县| 元氏县| 定边县| 浠水县| 石门县| 永登县| 神木县| 太仆寺旗| 彩票| 泊头市| 同仁县| 长兴县| 新绛县| 漠河县| 平乡县| 仁布县| 大姚县| 黑河市| 开平市| 策勒县| 永吉县| 铁力市| 宜兰县| 绥宁县| 米脂县| 灌云县| 朝阳县| 镇雄县| 资源县| 桦南县| 甘谷县| 西乌珠穆沁旗| 牙克石市| 揭阳市| 阳东县| 西华县| 邵阳县|