請問如何在CCD擷取的畫面中畫線~~ |
尚未結案
|
danielkelly
初階會員 ![]() ![]() 發表:36 回覆:108 積分:28 註冊:2003-05-11 發送簡訊給我 |
|
mkbobo
一般會員 ![]() ![]() 發表:4 回覆:68 積分:19 註冊:2003-04-10 發送簡訊給我 |
|
taishyang
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
JerryKuo
版主 ![]() ![]() ![]() ![]() ![]() 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
danielkelly你好: 我不會直接畫在ccd擷取影像上面,但我是先利用FrameCallBack的方法
以33Hz速度得到單張影像,並貼於TImage上,再畫上直線,以下是我的片
段程式碼,參考看看
//33Hz擷取單張影像,並畫上直線; void __fastcall TForm1::Timer1Timer(TObject *Sender) { capSetCallbackOnFrame(hWndC, &FrameCallBack); Image1->Canvas->Pen->Style = psDot; Image1->Canvas->Pen->Mode = pmXor; Image1->Canvas->MoveTo((int)Image1->Width/2,0); Image1->Canvas->LineTo((int)Image1->Width/2,Image1->Height);; Image1->Canvas->MoveTo(0,(int)Image1->Height/2); Image1->Canvas->LineTo(Image1->Width,(int)Image1->Height/2); } //啟動按鈕; void __fastcall TForm1::Button8Click(TObject *Sender) { if(Timer1->Enabled) { Form1->DoubleBuffered = false; Timer1->Enabled = false; Button8->Caption = "Start Copy"; } else { Form1->DoubleBuffered = true; Timer1->Enabled = true; Button8->Caption = "Stop Copy"; } }capSetCallbackOnFrame()是參考之前的文章 http://delphi.ktop.com.tw/topic.php?topic_id=22263 發表人 - jerrykuo 於 2003/12/05 16:25:55 |
mkbobo
一般會員 ![]() ![]() 發表:4 回覆:68 積分:19 註冊:2003-04-10 發送簡訊給我 |
JerryKuo版主說的是預先處理
就是在影像有的時候它會先呼叫
這個capSetCallbackOnFrame(hWndC, &FrameCallBack);
設定的callback func. FrameCallBack <<-- 以下提供你另一種方法你試看看提供你參考
這個是在影像處理完會 呼叫capYieldCallback
|
taishyang
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
taishyang
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
mkbobo您好:
我按照您的程式測試但是FormCreate時並沒有效果,畫面正常但Panel上框框並沒有出現
|
MilesWamg
一般會員 ![]() ![]() 發表:18 回覆:37 積分:11 註冊:2003-02-07 發送簡訊給我 |
以圖層的觀念來說的話
Canvas只算單一圖層
所以只要CCD有更新自然就會被覆蓋過去
我提供兩種做法
一在影像蓋過去時 在重新在Canvas上畫線
二另做一個圖層在他之上這時候你要怎麼做便很容易,但是會有一個問題透明怎麼做 這個我目前還不知道 我用的方法是方法一 希望會有高手提供方法二 透明阿
用小畫家劃一張全黑的圖bmp打底(如畫於TPaintBox)
再放於canvas上,很神奇的他是透明的歐
即擷取影像物件上又覆蓋另一個物件
如玻璃一般可以在此(如TPaintBox上作畫)
|
danielkelly
初階會員 ![]() ![]() 發表:36 回覆:108 積分:28 註冊:2003-05-11 發送簡訊給我 |
|
JerryKuo
版主 ![]() ![]() ![]() ![]() ![]() 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
|
taishyang
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
danielkelly
初階會員 ![]() ![]() 發表:36 回覆:108 積分:28 註冊:2003-05-11 發送簡訊給我 |
|
anpino
版主 ![]() ![]() ![]() ![]() 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
影像放在TImage上, 因為不斷的更新畫面, 所以畫框就會被洗掉。
建議你在TImage上加一個TPaintBox, 並將框線畫在TPaintBox上,
這樣會比較明顯, 也比較不容易當掉(例如偵測Motion Detection時需要時常更新畫框顏色, 這個時候, 多channel motion 觸發時容易當掉(<--不明原因))。 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D
[url="http://anpino.begin.8d8d.com"]Programmers Guide[/url] 發表人 - anpino 於 2003/12/15 14:41:19
|
JerryKuo
版主 ![]() ![]() ![]() ![]() ![]() 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
試了許多方法,但都不能video視窗畫出線,不過小弟有一些心得分享給大家 1.之所以不能畫出線原因,是因為這個視窗是Form的最上層,不管怎麼畫線
都會畫在video視窗的下面,並不是因為畫面不斷更新的原因。試試把video
視窗放在Form上,或是Panel上,video視窗都是在最上方,沒有任何元件會
蓋過它。
2.因此假設要畫出線,必需有函數直接畫線在video視窗上,現在還找不到。
3.我們可以發現:只有新的Form才能蓋過video視窗。那是不是建立一透明的
Form放在video視窗上,在這透明Form上畫線就可以達到我們想要的結果呢?
會不會太異想天開
|
mkbobo
一般會員 ![]() ![]() 發表:4 回覆:68 積分:19 註冊:2003-04-10 發送簡訊給我 |
|
anpino
版主 ![]() ![]() ![]() ![]() 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
引言: 有看這個討論串的前輩先進們 在此先說聲抱歉 |
danielkelly
初階會員 ![]() ![]() 發表:36 回覆:108 積分:28 註冊:2003-05-11 發送簡訊給我 |
|
anpino
版主 ![]() ![]() ![]() ![]() 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |