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

主站蜘蛛池模板: 欧美另类精品一区二区三区| 国产va在线观看免费| 欧美一级高清视频在线播放| 亚洲天堂精品视频| 亚洲一区无码在线| 国产成人a在线观看视频| 亚洲综合亚洲国产尤物| 2020国产免费久久精品99| 精品国产一区二区三区在线观看| 亚洲一区毛片| 福利视频久久| 日本亚洲欧美在线| 色综合激情网| 国产精品网址你懂的| 国产精品第一区| 精品福利网| 亚洲Av综合日韩精品久久久| 99尹人香蕉国产免费天天拍| 成人毛片免费在线观看| 在线观看欧美国产| 亚洲性一区| a色毛片免费视频| 在线观看国产黄色| 午夜三级在线| 少妇极品熟妇人妻专区视频| 伊人国产无码高清视频| 久久香蕉国产线| 亚洲第一精品福利| 午夜啪啪网| 最新国产在线| 色综合五月婷婷| 97国产成人无码精品久久久| 国内精品一区二区在线观看| 韩日午夜在线资源一区二区| 亚洲国产精品无码久久一线| 九九热这里只有国产精品| 欧美中文一区| 国产流白浆视频| 亚洲男人的天堂久久精品| 精品无码日韩国产不卡av| 天堂av综合网| 呦视频在线一区二区三区| 国内a级毛片| 欧美精品成人| 国产一在线| 青青草国产一区二区三区| 91口爆吞精国产对白第三集| 成人小视频在线观看免费| 一级黄色片网| 国产精品免费久久久久影院无码| 久久精品女人天堂aaa| 中日韩一区二区三区中文免费视频 | 91香蕉视频下载网站| 香蕉视频在线精品| 国产va在线| 伊在人亚洲香蕉精品播放| 国产va在线| 九一九色国产| 99久久国产自偷自偷免费一区| 97成人在线观看| 国内精品91| 成人一区在线| 日韩在线观看网站| 精品91视频| 国产精品嫩草影院视频| av在线手机播放| 精品午夜国产福利观看| 国产精品黑色丝袜的老师| 一级毛片免费不卡在线视频| 国产亚洲精品资源在线26u| 波多野结衣一区二区三视频| 国产草草影院18成年视频| 亚洲男女在线| 色婷婷电影网| 精品成人一区二区三区电影| 国产精品成人AⅤ在线一二三四 | 国产在线麻豆波多野结衣| 国产成本人片免费a∨短片| 国产精品精品视频| 亚洲精品无码久久久久苍井空| 久久综合婷婷| 久久精品人人做人人爽|