關於辨識顏色的問題 |
尚未結案
|
visuala
一般會員 發表:33 回覆:39 積分:14 註冊:2003-04-01 發送簡訊給我 |
各位大大 不好意思 我想請問一下..
圖片中本來有黃,藍,紅,綠四個區域...
<<原圖>>
另一張圖片則是加入了一個粉紅色的圓圈
<<外來物進來>>
最後我要用CCD來拍攝, 但是我想我先用數位像機拍攝幾張圖做辨識的測試
我要做到的目標是
1.把拍攝照片的原圖確定出四種顏色的範圍 2.然後手指戴一個粉紅色的圓圈進入原圖,進入後的圖就是像加了粉紅色的圈圈 3.因為之前已經訂出了原圖的四種顏色所在範圍,便可以馬上找出粉紅色現在的位置 4.判定出粉紅色的位置之後,看有沒有在四種顏色的範圍內,如果有的話 便驅動我要驅動的事件
這個我想用拿來做小遊戲的驅動機制 我現在的問題是因為數位像機拍攝出來的圖片RGB誤差艇大的,不知道我該用什麼方法修正
如果不用RGB當判定依據的話 又該如何在一開始確定出四種顏色的範圍呢 麻煩各位大大跟我指點一下 謝謝~ 發表人 - visuala 於 2003/11/12 21:44:30
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
visuala
一般會員 發表:33 回覆:39 積分:14 註冊:2003-04-01 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
visuala
一般會員 發表:33 回覆:39 積分:14 註冊:2003-04-01 發送簡訊給我 |
我要驅動的事件何不直接找出粉紅色的位置呢?
為了抵抗光線的影響,大部分都是轉到HSV,HSI,或者是YCrCb這些把亮度獨立出
來的色彩模型 順心
------------------------------------------------------- 不好意思 我傳兩張實際用像機拍出來的圖...麻煩幫我看看
<<原圖>>
< src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=12699675&CC=284025">
<<加入手指的圖>>
PS:1.顏色我是任舉來測試的 所以如果要改可以再換
2.我是想用邊邊的黑點來幫助邊界判定 不要可以刪除 //-----------我的目標是---------//
1.把拍攝照片的<<原圖>>確定出四種顏色的區域範圍(座標) 2.然後手指戴一個黃色的圓圈進入<<原圖>>,進入後的圖就是像加了黃色的圈圈--<<加入手指的圖>> 3.因為之前已經訂出了<<原圖>>的四種顏色所在範圍,便可以馬上找出黃色現在的位置 4.判定出黃色的位置之後,看有沒有在四種顏色的範圍內,如果有的話 便驅動我要驅動的事件 這個我想用拿來做小遊戲的驅動機制 我現在的問題是因為數位像機拍攝出來的圖片RGB誤差艇大的,不知道我該用什麼方法修正
如果不用RGB當判定依據的話 又該如何在一開始確定出四種顏色的範圍座標呢 新手請多多包含><... 發表人 - visuala 於 2003/11/15 18:09:52
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
visuala您好:
請參考下面的code,找出紅色的
void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { int R=GetRValue(Image1->Canvas->Pixels[X][Y]); int G=GetGValue(Image1->Canvas->Pixels[X][Y]); int B=GetBValue(Image1->Canvas->Pixels[X][Y]); //Form1->Caption=IntToStr(R)+" "+IntToStr(G)+" "+IntToStr(B);//秀出RGB TImageProcess* YCRCB=new TImageProcess(); float* YCrCbPtr=YCRCB->RGB2YCrCb(R,G,B); int Y1=YCrCbPtr[0]; int Cr=YCrCbPtr[1]; int Cb=YCrCbPtr[2]; Form1->Caption=IntToStr(Y1)+" "+IntToStr(Cr)+" "+IntToStr(Cb);//秀出YCrCb } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Graphics::TBitmap* BMP = new Graphics::TBitmap(); BMP->Assign(Image1->Picture); Byte* ptr=NULL; for (int y=0;y效果如下圖所示 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~> |
visuala
一般會員 發表:33 回覆:39 積分:14 註冊:2003-04-01 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |