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

主站蜘蛛池模板: 麻豆精品视频在线原创| 91在线播放国产| 久久网欧美| 婷婷午夜天| 日韩人妻少妇一区二区| 尤物特级无码毛片免费| 欧美国产成人在线| 欧美日韩精品一区二区在线线| 国产va欧美va在线观看| 久久亚洲国产最新网站| 久久人搡人人玩人妻精品| 91av国产在线| 国产精品9| 色综合国产| 免费精品一区二区h| 中文成人无码国产亚洲| 中文一区二区视频| 另类欧美日韩| 国产激情无码一区二区APP| 国产色婷婷视频在线观看| 国产精品hd在线播放| 亚洲日本中文字幕天堂网| 久久这里只有精品2| 性喷潮久久久久久久久| 99草精品视频| 天堂亚洲网| 国产成人喷潮在线观看| 国产欧美成人不卡视频| 第九色区aⅴ天堂久久香| 免费国产在线精品一区| 91娇喘视频| 午夜福利视频一区| 98精品全国免费观看视频| 成年人国产网站| 欧美精品另类| 四虎影视库国产精品一区| 中国精品久久| 一级一级一片免费| 国产乱人乱偷精品视频a人人澡| 在线看片国产| 永久免费无码成人网站| 国产91av在线| 91极品美女高潮叫床在线观看| 99精品在线看| 一区二区三区国产| 美女无遮挡免费视频网站| 狂欢视频在线观看不卡| 婷婷99视频精品全部在线观看| 午夜不卡视频| 亚洲天堂日本| 久久精品人人做人人爽电影蜜月| 免费在线一区| 免费人成又黄又爽的视频网站| 国产精选小视频在线观看| 久久久无码人妻精品无码| 久久综合伊人 六十路| 日韩高清一区 | 国产黄在线免费观看| 中文字幕日韩欧美| 日本国产精品| 国产精品亚洲片在线va| 三级视频中文字幕| 亚洲无限乱码| 亚洲三级色| 黄色网在线免费观看| 少妇极品熟妇人妻专区视频| 欧美综合激情| 一区二区日韩国产精久久| 亚洲成人黄色在线观看| 国产精品毛片一区视频播 | 国产成人你懂的在线观看| 精品无码专区亚洲| 日韩视频精品在线| 成人国产精品一级毛片天堂 | 日韩无码视频播放| 自拍偷拍一区| 无码日韩精品91超碰| 欧美视频在线观看第一页| 日本午夜精品一本在线观看| …亚洲 欧洲 另类 春色| 日本一区二区不卡视频| 亚洲精品日产精品乱码不卡|