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

主站蜘蛛池模板: 久久午夜夜伦鲁鲁片无码免费| 成人永久免费A∨一级在线播放| 3344在线观看无码| 国内自拍久第一页| 精品91视频| 国产亚洲高清在线精品99| 欧美一道本| 久热re国产手机在线观看| 亚洲第一区在线| 国产成人精品2021欧美日韩 | 久操中文在线| 福利视频一区| 伊人91在线| 久久国产精品夜色| 自拍偷拍欧美日韩| 亚洲无码日韩一区| 干中文字幕| 无码在线激情片| 91色老久久精品偷偷蜜臀| 午夜激情婷婷| 欧美成人a∨视频免费观看| 久久国产乱子| 在线欧美日韩国产| 亚洲av无码人妻| 亚洲专区一区二区在线观看| 欧美人与牲动交a欧美精品| 天堂岛国av无码免费无禁网站 | 欧美自慰一级看片免费| 国产免费网址| 99尹人香蕉国产免费天天拍| 2021国产精品自产拍在线观看| 国产欧美日韩在线一区| 亚洲AV无码乱码在线观看裸奔| 国产第一福利影院| 国产精品30p| 一级一级一片免费| 亚洲天堂网2014| 国产在线无码av完整版在线观看| 在线高清亚洲精品二区| 亚洲最新网址| 亚洲无码精品在线播放 | 拍国产真实乱人偷精品| 色偷偷一区二区三区| 欧美视频二区| 五月婷婷激情四射| 日本在线亚洲| www.youjizz.com久久| 911亚洲精品| 亚洲一区二区三区香蕉| 久久黄色影院| 国产成人资源| 影音先锋丝袜制服| 国产成人喷潮在线观看| 亚洲系列中文字幕一区二区| 国产亚洲视频播放9000| 亚洲AV无码一二区三区在线播放| 日韩av资源在线| 风韵丰满熟妇啪啪区老熟熟女| 激情综合五月网| 人妻精品久久久无码区色视| 一区二区三区国产精品视频| 国产三级a| 久久96热在精品国产高清| 91丨九色丨首页在线播放 | 欧美成人午夜影院| 午夜精品一区二区蜜桃| 亚洲欧美另类专区| 中文字幕2区| 91麻豆久久久| 天天做天天爱天天爽综合区| 日韩天堂视频| 日韩福利在线观看| 久久久噜噜噜久久中文字幕色伊伊 | 国产永久免费视频m3u8| 国产精品污污在线观看网站| 精品国产一区二区三区在线观看| 999精品在线视频| 99精品伊人久久久大香线蕉| 国产精品无码影视久久久久久久| 国产超碰一区二区三区| 久99久热只有精品国产15| 91麻豆精品国产91久久久久|