999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

用Delphi+DSPack開發數碼攝像程序

2007-12-31 00:00:00
計算機時代 2007年10期

摘 要:考生肖像信息的即時采集越來越多地被應用到招生考試工作中。文章介紹了如何在Windows系統上運用Debhi 7和DSPack快速開發基于Direct Show技術的數碼攝像程序。

關鍵詞:數碼攝像;DSPack;DirectX;Direct Show

0 引言

在招生信息采集工作中,一個非常重要的部分就是采集考生的肖像信息。隨著考生人數的激增與工作要求的提高,肖像采集模式的不斷調整,從最早的掃描儀掃描照片、數碼相機聯機拍攝一直到現在的視頻捕獲卡+攝像機快速采集,以不斷適應招生形勢的變化。我們把聯機直接拍攝考生肖像的程序叫數碼攝像程序。對于數碼攝像程序,早期大多利用Video forWindow編寫,它支持的設備種類少,且實現難度較高。現在利用Direct Show可以開發出支持攝像頭、內置或外置視頻采集卡、1394卡、內置或外置電視卡等多種設備的數碼攝像程序,但直接用Direct Show開發,難度同樣很高且開發效率也不高。可是有了DSPack情況就完全不同了,利用它來開發一個數碼攝像程序,幾乎是一件輕而易舉的事情。

DSPack是一組封裝了MS Direct Show和DirectX技術的組件,用于在安裝了DirectX9的Windows 9x、ME、2000和Windows XP系統上的多媒體應用系統的開發。它支持Delphi5、6、7和C++ Builder 6,它不僅功能強大而且完全免費。本文對利用DSPack開發視頻捕獲方式的數碼攝像程序做一個粗淺的介紹。

1 DSPack的安裝

DSPack的下載地址為: http://www.progdigy.com/modules.php?name=DSPack,當前版本是2.3.4。為了避免不必要的麻煩,先要確認系統中已裝上了DirectX9,然后再安裝DSPack。如果想進行VMR、Direct3D或ASF方面的開發,則還需要下載并安裝一些別的內容(請參考所下載的DSPack234.zip中所含Readme.htm中文件的相關內容)。下面是DSPack的安裝步驟:

(1)將DSPack解壓至任意目錄。假設解壓至Programfiles\\DSPack目錄,然后查看,有沒有只讀屬性的文件,如果有,請把只讀屬性去掉;

(2)以Delphi 7為例,在Tools>Environment Options>Li-brary>Library path中,添加以下搜索路徑:

Program files\\DSPack\\src\\Directx9

Program files\\DSPack\\src\\DSPack

(3)用Files>open分別打開Program files\\packages下的DirectX9_D7.dpk和DSPack_D7.dpk按Compile鈕進行編譯;

(4)最后打開Program files\\packages下的DSPackDesign_D7.dpk,按Install鈕進行安裝。

以上步驟如果順利完成,并且在Delphi工具欄上出現了如圖1所示的DSPack工具欄,則安裝成功。

2 一個最基本的攝像程序功能概述

它由預覽窗口、取景框、照片名輸入框、拍攝鈕、照片和設備連接與設置這六個部分組成。其使用步驟與方法為:首先,在程序運行時所顯示的視頻設備下拉列表中,選中其中一個(如果有多個的話),按連接按鈕,程序就會連接指定的視頻設備,如果連接正常就會在預覽窗口中即時顯示被拍攝對像;然后輸入照片名,自由拖動取景框,框住要拍攝的部分(通常是頭像),按拍攝按鈕就可以把取景框中的內容拍攝下來顯示在照片上,并同時保存為“照片名.jpg”。

圖2所示,這是通過一個Logitech QuickCam Pro 4000攝像頭拍攝某游戲雜志的封面女主角所看到的程序運行效果截圖。

3 關鍵點說明

(1)所用到的DSPack組件

FilterGraph、Filter、SampleGrabber和VideoWindow各一個,將Filter、SampleGrabber和VideoWindow的FilterGraph屬性都設置成FilterGraph的name,并注意將FilterGraph的Mode屬性設置成gmCapture。

DSPack及普通VCL的組件分布如圖3所示。

(2)視頻設備的聯接因為是要用來拍攝照片,所以我們要求只列出支持DireShow的視頻設備就可以了,否則在設備列表中將出現一大堆與應用無關的設備。方法是聲明一個TsysDevEnum型變量sysdev,在表單的OnCreate中,利用TSysDevEnum.Create(CLSID_VideolnputDeviceCategory)把視頻設備列表取到sysdev中。

(3)取景框的制作

如果用Video for Window方式開發過視頻捕獲程序,就會知道要在一個視頻流上放一個框不是一件容易的事——任何控件往上一放,只要一連接視頻,它就會消失。傳統的辦法是放一個Timer,在OnTimer事件中不停地調用API直接寫屏畫框。這種方式控制起來比較復雜,常常會由于interval設置得不當或因為機器性能的差異,出現取景框拖動時的軌跡殘留與閃爍現象。在DSPack中可以用DSVideoWindowEx2來代替VideoWindow,因為它有Canvas,而且可以把視頻輸出到任何有Handle的控件上。如何利用它的這一特性來做可以移動的取景框,可以參考DSPack自帶的一個例子(在Dspack'tDemoskDSVideoWindowEXkPlayWin中)。其實,用第二種方法也不簡單。更簡單更直接的辦法是可以在SampleGrabber的OnBuffer事件中,利用其GetBitmap方法,將視頻流導向到一個普通的Image上,而在一個\romage上,可以想放什么就放什么,控制起來很方便。因為窗口上沒有必要放兩個一樣的視頻,所以把VideoWindow的高和寬都設置成了0。這是個典型的懶人懶辦法,其它副作用沒發現,只是多了個Image。

(4)視頻設備的屬性設置

有時候連接到程序中的視頻設備并沒有工作在想要的模式中,或者為了利用它們自帶的一些功能,來改善畫面的質量,而又想在程序中直接調出如圖4所示的設置窗口時,就需要用到DsUtil的HaveFilterPropertyPage()、ShowFilterPropertyPage()和ShowPinpropertyPageO了。

4 結束語

本文對“數碼攝像”的主要功能(6種)作了介紹,并描述了如何實現一個最基本的數碼攝像應用過程,但在實際中要考慮的因素問題還有很多,如:錯誤控制、自適應視頻流的大小、允許視頻的縮放、照片的存儲控制、操作人員的權限控制、頭像的自動切割等等。

主站蜘蛛池模板: 国产成人精品亚洲77美色| 国产自产视频一区二区三区| 国产色伊人| 夜夜操国产| 欧美怡红院视频一区二区三区| 高清国产va日韩亚洲免费午夜电影| 丁香五月婷婷激情基地| 国产精品免费p区| A级毛片无码久久精品免费| 国产精品美人久久久久久AV| 国产自在线拍| 熟妇丰满人妻av无码区| 亚洲天堂首页| 毛片在线播放网址| 在线欧美日韩| 国产男女XX00免费观看| 人妻丰满熟妇AV无码区| 伊人久久影视| 精品国产亚洲人成在线| 青青青国产视频手机| 中文字幕在线观| 欧美精品二区| 99在线视频免费| 亚洲国产精品日韩av专区| 高潮爽到爆的喷水女主播视频 | 国产在线视频二区| 亚洲一级无毛片无码在线免费视频| 2020国产免费久久精品99| 国产在线一二三区| 69av在线| 亚洲三级色| 国产国产人成免费视频77777| 日韩 欧美 国产 精品 综合| 欧美日韩在线观看一区二区三区| 又猛又黄又爽无遮挡的视频网站| 亚洲欧洲国产成人综合不卡| a欧美在线| 精品国产乱码久久久久久一区二区| 国产一区成人| 亚洲综合精品香蕉久久网| 欧美性猛交一区二区三区| 亚洲成aⅴ人片在线影院八| 中文字幕色站| 国产成人综合久久| 欲色天天综合网| 国产成人无码Av在线播放无广告| 91午夜福利在线观看精品| 青草视频在线观看国产| 亚洲日韩在线满18点击进入| 免费人成黄页在线观看国产| 亚洲电影天堂在线国语对白| 少妇被粗大的猛烈进出免费视频| 91外围女在线观看| 日韩在线2020专区| 久久亚洲日本不卡一区二区| 成年av福利永久免费观看| 国产乱子伦精品视频| 中文字幕资源站| 日韩欧美中文在线| 国产精品欧美在线观看| AV片亚洲国产男人的天堂| 婷婷色狠狠干| 亚洲无码日韩一区| 婷婷五月在线| 欧美精品影院| 亚洲日本韩在线观看| 成人精品视频一区二区在线| 国产爽妇精品| 国产玖玖玖精品视频| 国产制服丝袜91在线| 日本成人一区| 另类重口100页在线播放| 亚洲青涩在线| 日韩欧美中文字幕在线韩免费| 无码电影在线观看| 久久人人妻人人爽人人卡片av| 91美女视频在线| 黄片一区二区三区| 成人噜噜噜视频在线观看| 亚洲欧美日韩综合二区三区| 日本成人不卡视频| 欧美色视频网站|