關於擷取panel畫面 |
尚未結案
|
soin
一般會員 發表:1 回覆:0 積分:0 註冊:2005-03-01 發送簡訊給我 |
程式要求:
將CCD畫面顯示在panel上,再按下按鈕後,一開始會連續擷取21張畫面到矩陣
之後每讀取一張處理一次,為了將panel畫面擷取到某一矩陣,我使用下列程式處理 void __fastcall TForm1::Button3Click(TObject *Sender)
{
for(i=0;i<21;i )
{
.....
.....
capSetCallbackOnFrame(hCapWnd,&fpVideoCallback);
.....
.....
}
}
//-------------------------------------------------------------------- LRESULT CALLBACK fpVideoCallback( HWND hwnd, LPVIDEOHDR lpvhdr )
{
unsigned char *a=(unsigned char *)lpvhdr->lpData;
BYTE R,G,B,Y;
FILE *fpdata=fopen("data.txt","a");
for (int j=288;j>=0;j--)
{
for (int i=0;i<352;i )
{
R=*a ;
G=*a ;
B=*a ;
Y=0.299*R 0.587*G 0.114*B;
// Form1->Image1->Canvas->Pixels[i][j]=RGB(Y,Y,Y);
imagetemp[i!][i][j]=Y;
}
}
capSetCallbackOnFrame(hCapWnd,NULL);
} 上面程式可以將擷取數值存到矩陣,但是會發生已經開始處理但是畫面還沒擷取完的情況
後來改用版上KENI_LIN的方法http://delphi.ktop.com.tw/topic.php?TOPIC_ID=62758
可以較快速的擷取畫面,但其格式如何計算成灰階 在者因為也是用callbackonframe的方式,會不會再出現類似之前的問題?
因為好像執行capSetCallbackOnFrame()後,馬上就會往下執行並不會等擷取完? 那可以設定擷取完畫面後,程式在往下執行嗎? 之前都寫C,現在用BCB有很多觀念還不太懂,所以上來請求幫忙,謝謝^^ 發表人 - soin 於 2005/04/18 18:58:43
|
fnk
高階會員 發表:40 回覆:149 積分:102 註冊:2004-01-02 發送簡訊給我 |
hihi...
據我所知..CallbackOnFrame應該是抓完一張才會再抓下一張...
若你的情形不是如此...
可以用個Flag來做為判斷...
CallbackOnFrame() { if (GrabFlag) { GrabFlag = false; // 預防還沒處理好..又有下一張進來... // 放入你的處理程式... GrabFlag = true; // 處理完畢..還原設定..以便可以處理下一張影像. } }另外...之前有寫一個簡單的程式.. 你可以參考一下... http://delphi.ktop.com.tw/topic.php?TOPIC_ID=69022 =========== 有興趣,就能進步 =========== |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |