每年的大學外語四六級考試,學校都要向考試辦上報考生的圖像信息,而且要求電子圖像的像素為320*240,大小不能超過15kb的以學生學號命名的jpg格式圖像文件。這就意味著我們要在短時間內(一般2-3天)完成4000人以上的圖像采集。如果以傳統的工作方式。用數碼照相機進行拍照,再對生成的電子照片修改像素,壓縮大小,重新以學號命名。這個過程所需的工作量是巨大的,不但很難在短時間內完成,而且也很容易在重命名時出現張冠李戴的錯誤??梢妭鹘y的方式是不可取的,筆者所使用的是攝像機和電腦相結合利用圖像采集軟件獲取考生圖像的新方法。其大大提高了工作效率,在規定時間內順利完成了學生圖像采集工作。
1、系統需求和可行性分析
目前各高校的外語四六級考試,需要對大量的考生進行圖像采集。傳統的照相設備己無法滿足需要。攝像設備和計算機相結合的采集方式成了必然趨勢。目前圖像采集的各種技術在各領域都有很多成功的案例,技術已經趨于成熟,但大多功能都不符合我們工作的實際需要。本系統以實際需求為出發點,主要實現能讓工作人員快速核對考生身份并獲取指定格式尺寸的電子圖像,使其成為工作人員的得力助手。
2、
軟件開發
2.1 開發環境
開發系統;Windows Sever 2003
開發軟件:Dephi7.0
數據庫:Access 2003
2.2 數據庫結構
我們將本系統用到的部分字段導入access2003中以便實現相關存儲和調用。
2.3 系統功能
(1)搜索外部設備:單擊刷新設備按鈕,自動查找連接到計算機的圖像信號生成設備如攝像機,攝像頭等。如果攝像設備在開機狀態,軟件會顯示出圖像。
(2)連接外部數據庫:可以選取所需的數據庫及其表和字段.
(3)圖像屬性設置:可根據需要設置抓取圖像的高和寬及圖像質量并命名,如尺寸240*320像素,圖像質量設為75。
(4)顯示學生信息:當鍵入學生學好后,自動顯示學生姓名、班級、身份證號等信息,以便確認學生身份。
(5)拍照:單擊“拍照”按鈕時,用取景框截取圖像。單擊右鍵保存圖片,雙擊左鍵取消當前圖像,重新再拍。
2.4 流程圈
3、軟件功能的實現
Delphi是Brland公司推出的,擁有一個可視華集成開發環境(IDE),采用面向對象的編程語言Ojectpasoal和基于部件的開發結構框架。Delphi提供了多個可供使用的構件,利用這些部件。開發人員可以快速地構造出應用系統。開發人員也可以根據自己的需要修改部件或用delphi本身編寫自己的部件。
當我們用delphi開發本軟件時,需要一個很重要的開發包一DSPazk。DSPark是基于Directshow和DirectX技術的多媒體開發包??梢栽诰W上免費下載,并按照其中的readme文件中的提示進行安裝。安裝成功后,在delphi工具欄中會出現DSPark工具欄。
3.1 引用的單元
Delphi通過引用單元來使用單元中的函數和過程,這樣可以大大提高編程人員的效率。本軟件的開發用到了以下單元:
uses
Windows,Messages,Winprocs,SysUtils,Variants,Classes,Graphics,Controls,Forms,
Dialogs,ExtCtrls,Clipbrd.jpeg,StdCtrls,FileCtrl,DB.ADODB,comobj,Menus,DSPack,DirectShow9.DSUtil,inifiles:
其中用到的DSPack組件中的VideoWindow,SampleGrabber,FilterGrapll,Filter部件,FilterGraph的mode屬性設置成gmCapture。
3.2 圖像截取和保存代碼
procedure TFOrml.ButtonlClick(Sender:TObject):
var
NewBitmap:Tbitmap:
Jpeg:TJPEGImage;
s:string;
i,j,k:integer;
myblob:tadoblobstream;
begin
Image.Canvas.Rectangle(oldx,oldy,oldx+RWidth oldy+RHeight).//重畫最后一個矩形,以擦除邊緣
buttonl.Enabled:=1:
button2.Enabled:=true:
NewBitmap:=Tbitmap.Create://創建一個NewBitmap來存放區域圖片
try
NewBitmap.Width:=RWidth:
NewBitmap.Height:=EHeight:
NewBitmap.Canvas.CopyReet(Rect(0,0,Rwidth,Height),image.canvas,Rect(0ldx,oldy,oldx+Rwidth,oldy+RHeight))://拷貝
finally
end:
Clipboard.Assign(Image.Picture)://把截取的圖象拷貝到剪切板
Jpeg:=TJPEGImage.Create:
try
Jpeg.compressionQuality:=strtoint(edit5.Text)://圖片質量
Jpeg.Assign(NewBitmap):
Jpeg.Compress:
Jpeg.SaveToFile(edit4.Text+’\\’+edit3.Text+’.jpg’):
finally
Jpeg.Free:
end;
end:
本文只是簡述了圖像采集系統的主要功能和一些主要技術,要想完成軟件的開發還需要考慮很多內容,如取景框的設置,錯誤控制,數據的存儲等。特別是要對DSPack開發包進行深入的了解,才能更好掌控開發的過程。