




已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
系 別 信息技術(shù)系 學(xué) 號(hào) 18 冀中職業(yè)學(xué)院畢業(yè)論文多媒體攝像頭程序開發(fā)與應(yīng)用論文作者: 指導(dǎo)教師: 專業(yè) 領(lǐng) 域 : 計(jì)算機(jī)應(yīng)用 論文提交日期:2011-4-2 2011 年 4 月冀中職業(yè)學(xué)院畢業(yè)論文多媒體攝像頭程序開發(fā)與應(yīng)用系 別 信息技術(shù)系 專 業(yè) 計(jì)算機(jī)應(yīng)用 班 級(jí) 學(xué) 號(hào) 姓 名 指導(dǎo)教師 _2011年 4月 2 日摘 要隨著多媒體電腦技術(shù)的發(fā)展與普及,電腦在人們的生活中已是不可或缺的一部分,多媒體技術(shù)廣泛應(yīng)用于生活、教學(xué)、研發(fā)等各個(gè)領(lǐng)域。而多媒體攝像頭在其中扮演著一個(gè)十分重要的角色,應(yīng)用于娛樂、通訊、安全等方面。操作攝像頭方便簡(jiǎn)單,而在微軟公司最新推出的Windows7操作系統(tǒng)中并沒有像Windows XP那樣給用戶提供一個(gè)簡(jiǎn)易操作攝像頭的程序,針對(duì)這種情況本文講述了如何利用DirectShow技術(shù)開發(fā)一個(gè)在Windows7以及Windows其他版本的操作系統(tǒng)中都可以使用的多媒體攝像頭程序。除此之外,該程序還可以用做單路視頻監(jiān)控軟件來使用,足可以滿足小型商店以及家庭的需求。關(guān)鍵詞:多媒體;攝像頭程序;DirectShowDeveloping and Applying of the Multimedia Cameras Program AbstractWith the development of computer technology and multimedia popularization, the computer has already been an integral part in peoples life. The multimedia technology is widely used in many different fields, such as teaching, research and development, and so on. However, multimedia camera plays a very important role, which is applied in entertainment, communication, security, etc. Operating cameras is not only convenient, but also easy. While the latest product, Windows7 operating systems by Microsoft, does not like Windows - XP which offers users a simple camera operation program. According to this kind of situation, this article talks about how to use DirectShow to develop a program which makes the multimedia camera can be used in Windows7 and other series of Windows operating system. In addition, the program also can be used as single video monitoring software, which can totally satisfy the demand of small-sized stores and family.Key words:Multimedia; Camera Program; DirectShow目 錄一概 論1(一)攝像頭程序的概況1(二)DYCap(多媒體攝像頭程序)的特征1(三)DirectShow組件原理分析1二系統(tǒng)介紹及主要功能的實(shí)現(xiàn)方法2(一)開發(fā)工具及運(yùn)行環(huán)境2(二)主要功能以及實(shí)現(xiàn)方法21. 視頻預(yù)覽22. 視頻錄制63. 圖片采集64. 換膚功能8三小結(jié)9參考文獻(xiàn)10致謝10附錄101. 安裝程序102. 源碼10一概 論(一)攝像頭程序的概況攝像頭(Camera)又稱為電腦相機(jī),電腦眼等,是一種視頻輸入設(shè)備,被廣泛的運(yùn)用于視頻會(huì)議,遠(yuǎn)程醫(yī)療及實(shí)時(shí)監(jiān)控等方面。普通的人也可以彼此通過攝像頭在網(wǎng)絡(luò)進(jìn)行有影像、有聲音的交談和溝通。另外,人們還可以將其用于當(dāng)前各種流行的數(shù)碼影像,影音處理。攝像頭程序是在操作系統(tǒng)之上人和攝像頭交互的一種平臺(tái),通過攝像頭程序可以將攝像頭捕捉到的視頻信號(hào)轉(zhuǎn)換成數(shù)字模式,并加以壓縮后轉(zhuǎn)換到計(jì)算機(jī)上運(yùn)用。(二)DYCap(多媒體攝像頭程序)的特征本程序?yàn)橛脩籼峁┴S富友好的操作界面,支持多個(gè)視頻設(shè)備以及解碼器的選擇,集視頻預(yù)覽、視頻錄制、圖片采集等主要功能為一體,并且為用戶提供了非常方便的管理平臺(tái)。根據(jù)不同需要用戶可以自己選擇相應(yīng)的解碼器來錄制視頻和進(jìn)行圖片采集。除此之外,該軟件還可以當(dāng)做簡(jiǎn)單的單路視頻監(jiān)控軟件使用,其實(shí)時(shí)預(yù)覽、視頻錄制和圖片采集的功能足可以滿足小型超市以及家庭監(jiān)控的需求。(三)DirectShow組件原理分析DirectX是Microsoft公司為游戲和其他高性能多媒體應(yīng)用所提供的一套底層應(yīng)用程序編程接口。而DirectShow是DirectX組件的一部分,提供對(duì)多媒體數(shù)據(jù)流的高質(zhì)量捕獲和回放。DirectShow技術(shù)是建立在DirectDraw和DirectSound組件基礎(chǔ)之上的,它通過DirectDraw對(duì)顯卡進(jìn)行控制以顯示視頻,通過DirectSound對(duì)聲卡進(jìn)行控制以播放聲音。 DirectShow可提供高質(zhì)量的多媒體流的捕獲和回放功能;支持多種媒體格式,包括ASF(Advanced Systems Format),MPEG(Motion Picture Experts Group),AVI(Audio-Video Interleaved),MP3(MPEG Audio Layer-3)和WAV聲音文件;可以從硬件上捕獲媒體數(shù)據(jù)流;可以自動(dòng)檢測(cè)并使用視頻和音頻加速硬件。因此,DirectShow可以充分發(fā)揮媒體的性能,提高運(yùn)行速度,可以簡(jiǎn)化媒體播放、媒體間的格式轉(zhuǎn)換和媒體捕獲等工作。同時(shí),它還具有極大的可擴(kuò)展性和靈活性,可以由用戶自己創(chuàng)建組件,并將這個(gè)組件加入DirectShow結(jié)構(gòu)中以支持新的格式或特殊效果。應(yīng)用程序與DirectShow組件以及DirectShow所支持的軟硬件之間的關(guān)系如圖1所示:二系統(tǒng)介紹及主要功能的實(shí)現(xiàn)方法(一)開發(fā)工具及運(yùn)行環(huán)境1. 開發(fā)工具本程序采用C#語言和最新版的Visual Studio 2010(C#)+ DirectShow開發(fā)包 + Microsoft .NET Framework 4開發(fā)。2. 運(yùn)行環(huán)境DirectX 9.0(或更高版本) + Microsoft .NET Framework 4 + Windows操作系統(tǒng)。3. 硬件要求攝像頭一個(gè);電腦主機(jī)最低配置:處理器 1GHz 內(nèi)存 512MB 磁盤空間 850MB;電腦主機(jī)推薦配置:處理器 2GHz 內(nèi)存 2GB 磁盤空間(最小值) 850MB;(二)主要功能以及實(shí)現(xiàn)方法1. 視頻預(yù)覽程序主界面:(1)程序運(yùn)行后會(huì)自動(dòng)搜索本地計(jì)算機(jī)可用視頻設(shè)備并將其一一列舉供用戶選擇,主要代碼如下:/列舉視頻設(shè)備并將其添加到Combobox1foreach(DsDevicedsinDsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice) comboBox1.Items.Add(ds.Name); comboBox2.Items.Add(); /列舉解碼器并將其添加到comboBox2 foreach(DsDevicedsinDsDevice.GetDevicesOfCat(FilterCategory.VideoCompressorCategory) comboBox2.Items.Add(ds.Name); (2)點(diǎn)擊打開視頻,實(shí)現(xiàn)視頻預(yù)覽,主要代碼如下: 代碼一圖像初始化:/獲取IGraphBuilder接口對(duì)象graphBuilder = (IGraphBuilder) new FilterGraph();/獲取ICaptureGraphBuilder2接口對(duì)象ICaptureGraphBuilder2 captureGraphBuilder = null;captureGraphBuilder = (ICaptureGraphBuilder2) new CaptureGraphBuilder2();/獲取IGraphBuilder接口的IMediaControl對(duì)象mediaControl = (IMediaControl) this.graphBuilder;/獲取m_graphBuilder 接口對(duì)象的IMediaEventEx對(duì)象mediaEventEx = (IMediaEventEx)graphBuilder;/設(shè)置ICaptureGraphBuilder2的IGraphBuilder接口為當(dāng)前對(duì)象int hr = captureGraphBuilder.SetFiltergraph(this.graphBuilder);DsError.ThrowExceptionForHR(hr);/添加視頻源設(shè)備hr = graphBuilder.AddFilter(theDevice, source filter);DsError.ThrowExceptionForHR(hr);/添加視頻解碼器if (theCompressor != null) hr = graphBuilder.AddFilter(theCompressor, compressor filter); DsError.ThrowExceptionForHR(hr);/通過theVideoDevice(IBaseFilter)視頻接口對(duì)象的Preview Pin預(yù)覽hr=captureGraphBuilder.RenderStream(PinCategory.Preview, MediaType.Video, theDevice, null, null);DsError.ThrowExceptionForHR(hr);/獲取theVideoDevice的IAMVideoControl對(duì)象IVideoWindow videoWindow = null;videoWindow = (IVideoWindow) graphBuilder;/設(shè)置panel1為視頻顯示窗口hr = videoWindow.put_Owner(panel1.Handle);DsError.ThrowExceptionForHR(hr);/去除視頻窗口邊框hr=videoWindow.put_WindowStyle(WindowStyle.Child WindowStyle.ClipChildren);DsError.ThrowExceptionForHR(hr);/把視頻窗口綁定在panelhr = videoWindow.SetWindowPosition(0, 0, panel1.Width, panel1.Height);DsError.ThrowExceptionForHR(hr);/釋放接口資源Marshal.ReleaseComObject(captureGraphBuilder);代碼二開始預(yù)覽:ImediaControl對(duì)象接口提供三種控制狀態(tài):開始(Run())、暫停(Pause())和停止(Stop())。預(yù)覽界面如下圖所示:開始預(yù)覽代碼如下:if (mediaControl != null) mediaControl.Run();2. 視頻錄制視頻錄制原理及實(shí)現(xiàn)方法與視頻預(yù)覽大體相同,用戶可以根據(jù)不同需求選擇不同的解碼器來錄制不同質(zhì)量的視頻文件,而其實(shí)現(xiàn)方法也十分簡(jiǎn)單只需在圖像初始化的時(shí)候新建IBaseFilter和IFileSinkFilter兩個(gè)接口對(duì)象,從ICaptureGraphBuilder2接口上調(diào)用SetOutputFileName函數(shù)將視頻文件輸出,與此同時(shí)從ICaptureGraphBuilder2接口調(diào)用RenderStream函數(shù)選擇解碼器來對(duì)視頻流進(jìn)行壓縮。視頻錄制相關(guān)代碼如下:/初始化IbaseFilter接口IBaseFilter mux;/初始化IbaseFilter接口IFileSinkFilter sink;/輸出視頻文件hr = captureGraphBuilder.SetOutputFileName(MediaSubType.Avi, C:video.avi, out mux, out sink);DsError.ThrowExceptionForHR(hr);/選擇解碼器對(duì)視頻流進(jìn)行壓縮hr = captureGraphBuilder.RenderStream(PinCategory.Capture, MediaType.Video, theDevice, theCompressor, mux);DsError.ThrowExceptionForHR(hr);/釋放接口資源Marshal.ReleaseComObject(mux);Marshal.ReleaseComObject(sink); 3. 圖片采集拍照界面集圖片采集、參數(shù)設(shè)定、查看、管理等功能為一體,用戶可以根據(jù)不同需要設(shè)置圖片質(zhì)量,其友好的操作界面及方便的管理功能,令人耳目一新。拍照模式主界面:(1)圖片采集的實(shí)現(xiàn)方法是在圖像初始化成功的基礎(chǔ)之上,利用DirectShow開發(fā)包提供的圖像捕獲接口(SampleGrabber)接口進(jìn)行圖片捕獲,SampleGrabber圖像捕獲效率高,利用該接口下的回調(diào)函數(shù)(SetCallBack)可輕松實(shí)現(xiàn)對(duì)源視頻流的捕獲并將其寫入BMP文件中,這樣便實(shí)現(xiàn)的對(duì)源視頻流的圖片采集。圖片采集相關(guān)代碼如下:/創(chuàng)建IbaseFilter接口對(duì)象capFilterIBaseFiltercapFilter;/創(chuàng)建IsampleGrabber接口對(duì)象sampGrabberISampleGrabber sampGrabber; /當(dāng)”拍照”按鈕按下時(shí),調(diào)用IsampleGrabber對(duì)象的SetCallback函數(shù)hr = sampGrabber.SetCallback(this, 1);/將捕獲到的源視頻流轉(zhuǎn)換并將其寫入BMP文件中int w = videoInfoHeader.BmiHeader.Width;int h = videoInfoHeader.BmiHeader.Height;if( (w & 0x03) != 0) | (w 4096) | (h 4096) )return;int stride = w * 3;GCHandle handle = GCHandle.Alloc( savedArray, GCHandleType.Pinned );int scan0 = (int) handle.AddrOfPinnedObject();scan0 += (h - 1) * stride;Bitmap b = new Bitmap( w, h, -stride, PixelFormat.Format24bppRgb, (IntPtr) scan0 );(2)圖片采集參數(shù)設(shè)定界面如下圖所示:該程序封裝在DirectShow動(dòng)態(tài)庫中,可以直接調(diào)用,調(diào)用代碼:DsUtils.ShowCapPinDialog( capGraph, capFilter, this.Handle );4. 換膚功能本程序采用第三方控件(IrisSkin2)實(shí)現(xiàn)對(duì)程序界面的美化,提供多種風(fēng)格的皮膚供用戶選擇,操作簡(jiǎn)便,界面友好。程序皮膚設(shè)置如圖所示:程序加載皮膚代碼:skinEngine1.SkinF
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鹽泥資源的加工與利用考核試卷
- 糖果生產(chǎn)技術(shù)創(chuàng)新與發(fā)展考核試卷
- 自然遺跡保護(hù)與山地戶外運(yùn)動(dòng)規(guī)劃考核試卷
- 竹子種植與加工技術(shù)發(fā)展趨勢(shì)考核試卷
- 三明市重點(diǎn)中學(xué)2025年初三年級(jí)第二學(xué)期期初考試生物試題含解析
- 曲阜師范大學(xué)《風(fēng)險(xiǎn)管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 上??苿?chuàng)職業(yè)技術(shù)學(xué)院《中級(jí)朝鮮語二》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京郵電大學(xué)《結(jié)構(gòu)模型設(shè)計(jì)制作》2023-2024學(xué)年第一學(xué)期期末試卷
- 四川現(xiàn)代職業(yè)學(xué)院《眼科護(hù)理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 濰坊職業(yè)學(xué)院《美術(shù)基礎(chǔ)(Ⅰ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年內(nèi)蒙古航開城市投資建設(shè)有限責(zé)任公司招聘筆試沖刺題(帶答案解析)
- 《離散數(shù)學(xué)》試題帶答案
- 黑龍江省佳木斯市2023-2024學(xué)年八年級(jí)下學(xué)期期中聯(lián)考數(shù)學(xué)試題(無答案)
- 仿生蝴蝶飛行原理
- MOOC 唐宋詩詞與傳統(tǒng)文化-湖南師范大學(xué) 中國大學(xué)慕課答案
- 四年級(jí)數(shù)學(xué)(四則混合運(yùn)算)計(jì)算題專項(xiàng)練習(xí)與答案匯編
- 人力資源年度個(gè)人工作總結(jié)模板(四篇)
- 餐飲設(shè)備安全培訓(xùn)
- 風(fēng)力發(fā)電施工合同范本
- 糞群移植的護(hù)理
- 抖音團(tuán)播行業(yè)報(bào)告
評(píng)論
0/150
提交評(píng)論