CCD使用TMemoryStream的問題 |
尚未結案
|
cello
一般會員 發表:8 回覆:20 積分:5 註冊:2003-10-01 發送簡訊給我 |
不好意思...想請問一下...
我參考了
http://delphi.ktop.com.tw/topic.php?topic_id=22263
的程式...並依照...
http://delphi.ktop.com.tw/topic.php?topic_id=25979
的方法做了修改...
可是在第一次執行時就會發生"Scan line index out of range"的錯誤...
但是再執行一次時就可以了..可是處理的圖是我第一次擷取下來的圖..不是第二次擷取的...
也就是說...我處理的圖都會差一張...都不是最新擷取下來的圖...
這該怎麼辦呢? 我第一次發問...可能問的很笨...請大家見諒...
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
cello
一般會員 發表:8 回覆:20 積分:5 註冊:2003-10-01 發送簡訊給我 |
不好意思...以下是我的程式碼..請各位幫我看一下
void __fastcall TForm1::Button5Click(TObject *Sender) { DWORD BTime; BTime=timeGetTime(); capSetCallbackOnFrame (hCapWnd, &FrameCallBack); Graphics::TBitmap *TempBitmap,*TheBitmap; int i,j; Byte *ptr1,*ptr2,Gray,r,g,b; TempBitmap=new Graphics::TBitmap(); TheBitmap=MyImage->Picture->Bitmap; TempBitmap->Assign(TheBitmap); WORD H=MyImage->Height; WORD W=MyImage->Width; for( j=0 ; j第一次貼程式碼..如有貼錯請跟我講....謝謝! |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
cello您好:
您可以參考下面連結的作品
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34085
透過TMemoryStream物件取得ccd影像 BY MilesWamg 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~>
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
cello
一般會員 發表:8 回覆:20 積分:5 註冊:2003-10-01 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
cello您好:
我測試結果發現慢一張應該是必然現象,詳細原因我也查不出來(我嫩< >)
您可以等有經驗的人來幫您< >
但假如您只是要擷取攝影機畫面的話
您可以參考下面的code,速度也很快
假設畫面顯示在Panel1上 TCanvas *csBuf=new TCanvas; HDC hDC=GetDC(Panel1->Handle); csBuf->Handle=hDC; Graphics::TBitmap*Source=new Graphics::TBitmap(); Source->Width=Panel1->Width; Source->Height=Panel1->Height; Source->Canvas->CopyRect(Rect(0, 0, Source->Width, Source->Height), csBuf, Rect(0, 0, Panel1->Width, Panel1->Height)); Image1->Picture->Assign(Source); ReleaseDC(0, hDC); delete csBuf; delete Source;順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~> 發表人 - |
cello
一般會員 發表:8 回覆:20 積分:5 註冊:2003-10-01 發送簡訊給我 |
|
cello
一般會員 發表:8 回覆:20 積分:5 註冊:2003-10-01 發送簡訊給我 |
|
Roach
中階會員 發表:61 回覆:104 積分:98 註冊:2002-11-05 發送簡訊給我 |
我有碰到類似的問題
雖然我不是用你的方式抓圖
不過也是碰到慢一張的問題
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=48046
可以試試看
先宣告一個全區域變數 bool CallBackOK=false;
DWORD BTime; BTime=timeGetTime(); CallBackOK=false; capSetCallbackOnFrame (hCapWnd, &FrameCallBack); while(CallBackOK==false) Application->ProcessMessages(); Graphics::TBitmap *TempBitmap,*TheBitmap; int i,j; Byte *ptr1,*ptr2,Gray,r,g,b; TempBitmap=new Graphics::TBitmap(); TheBitmap=MyImage->Picture->Bitmap; TempBitmap->Assign(TheBitmap); WORD H=MyImage->Height; WORD W=MyImage->Width; for( j=0 ; j並在capSetCallbackOnFrame { ... ... 最後一行加上 CallBackOK=true; } 程式會等capSetCallbackOnFrame() 執行完畢才繼續執行 這樣應該就可以解決了 -------------- 試車總是問題多 |
cello
一般會員 發表:8 回覆:20 積分:5 註冊:2003-10-01 發送簡訊給我 |
|
Roach
中階會員 發表:61 回覆:104 積分:98 註冊:2002-11-05 發送簡訊給我 |
|
cello
一般會員 發表:8 回覆:20 積分:5 註冊:2003-10-01 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |