錯誤--Invalid floating point operation |
尚未結案
|
dean
一般會員 發表:24 回覆:60 積分:21 註冊:2003-08-23 發送簡訊給我 |
各位前輩好:
小弟寫rgb轉hsv的程式,那寫的過程有發生問題,但似乎是浮點數的問題,但小弟檢查程式實在不知道哪邊出錯,可否請各位前輩指點小弟。
〔Code〕
void __fastcall TForm1::RGB2HSV2Click(TObject *Sender)
{
Byte *ptr;
double R,G,B,H,H1;
Graphics::TBitmap *Bmp = new Graphics::TBitmap();
Bmp->Assign(Image1->Picture->Bitmap);
Bmp->PixelFormat = pf8bit;
for (int i=0;i
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
dean您好:
請參考下面聯結做適當的修改
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=37787
謝謝您的配合
>~我也是在學習的階段,回答的不好請您多多見諒與指教~> 發表人 -
|
zen
一般會員 發表:0 回覆:3 積分:5 註冊:2003-02-20 發送簡訊給我 |
|
dean
一般會員 發表:24 回覆:60 積分:21 註冊:2003-08-23 發送簡訊給我 |
兩位前輩您好:
小弟根據您們的建議修改了程式,後來程式在經過多番修改後可以跑了,但小弟仍有下列問題:
1.轉換成hsv後,那是什麼格式呢?是".BMP"嗎?
2.這樣子有沒有轉成hsv呢?將圖放入並且比較,似乎沒有任何改變。
3.Byte HSV[512][3][384]``到底用byte好還適用double好?因為兩個我試的結果都一樣!還有hsv的[512][3][384]這樣寫是對的ㄇ?
4.若我只要取h出來,那應該怎麼表現顯示在新圖中哩?
***這一個是從一本影像處理的書上擷取下來的,小弟只能先從模仿開始學習影像處理,因為以前沒有碰觸過,不好意思。小弟是有改一點,因為本來是c,若有怪怪請糾正小弟,小弟會虛心學習的。 ***
void __fastcall TForm1::RGB2HSV2Click(TObject *Sender) { int i,j,k,ppp=1,KKK=1; Byte *ptr; double R,G,B,H1,Max,min,PI=3.1415926; Byte HSV[512][3][384]; Graphics::TBitmap *Bmp = new Graphics::TBitmap(); Bmp->Assign(Image1->Picture->Bitmap); //Bmp->PixelFormat = pf24bit; for (i=0;i |
dean
一般會員 發表:24 回覆:60 積分:21 註冊:2003-08-23 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
dean您好:
引言: 1.轉換成hsv後,那是什麼格式呢?是".BMP"嗎? 2.這樣子有沒有轉成hsv呢?將圖放入並且比較,似乎沒有任何改變。 3.Byte HSV[512][3][384]``到底用byte好還適用double好?因為兩個我試的結果都一樣!還有hsv的[512][3][384]這樣寫是對的ㄇ? 4.若我只要取h出來,那應該怎麼表現顯示在新圖中哩? 1.不是BMP格式 BMP格式請參考下面連結 http://nova.bime.ntu.edu.tw/~ttlin/Course01/c1tech_document.htm 2.H的範圍是0~360,S的範圍是0~1,V我忘記了(好像是1~-1) 您可以看看數據經由公式反推得知沒有轉成功壓< > > 順心< > <>~我也是在學習的階段,回答的不好請您多多見諒與指教~ |
dean
一般會員 發表:24 回覆:60 積分:21 註冊:2003-08-23 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
kikikoko
一般會員 發表:4 回覆:8 積分:2 註冊:2003-05-16 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
dean
一般會員 發表:24 回覆:60 積分:21 註冊:2003-08-23 發送簡訊給我 |
各位前輩好:
小弟今天問過老師關於顯示方面問題,老師說若我是RGB->HSV只是格式的轉換,而不是"處理",若是前者,那要在顯示器上顯示則沒有多大的變化,應該也看不出來。JerryKuo與kikikoko兩位所解釋的則與老師一樣。感謝^^
那請教taishyang,您說要正規化,我上網找影像正規化或圖形正規化,不知道是我看不懂還是找不到,我不知道要怎麼把hsv[][][]內的值給正規化,要正規化從0-360的hsv到0-255的rgb應該是有一個既定的公式吧!?
---直接將bmp assign給Image2,所以Image1與Image2的畫面應該是一樣的----
對的,我後來檢查我的程式,我發現我的確適用tbitamp型態的bmp去給image1跟2,後來我怎麼想辦法把轉換後的hsv去assign給Bmp,在用Image2->Picture->Assign(Bmp);把它秀出來,還是沒有辦法!不知這部分該怎麼解決? 若想把h取出來要怎麼取?像要取rgb其中值,只要B = ptr[i*3];
G = ptri*3 1];R = ptr[i*3 2];就可以取出來,那hsv要怎麼取? **我很想學,但又很不懂,所以一直問蠢問題,希望不要不屑我的問題,嘻嘻嘻**
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
dean您好:
您誤會我的意思了,我的意思與JerryKuo版主和kikikoko會員是一樣的
我指的效果是指H的範圍映射到RGB範圍的灰階效果
我曾在一篇全國碩博士論文中有看到此效果,待我找到再PO上連結
請查詢
論文名稱: 以數位影像處理技術做人臉自動追蹤系統之研究 國家圖書館索書號: 448 007M 89-74 系統編號: 88NCKU0442160 出版年: 民89 研究生: 譚永恆當中第三章第7頁 引言: 若想把h取出來要怎麼取?像要取rgb其中值,只要B = ptr[i*3]; G = ptri*3 1];R = ptr[i*3 2];就可以取出來,那hsv要怎麼取?將RGB代入您的轉換公式即可得知HSV的值為何 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~> 發表人 - |
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
引言: 各位前輩好: 那請教taishyang,您說要正規化,我上網找影像正規化或圖形正規化,不知道是我看不懂還是找不到,我不知道要怎麼把hsv[][][]內的值給正規化,要正規化從0-360的hsv到0-255的rgb應該是有一個既定的公式吧!? ---直接將bmp assign給Image2,所以Image1與Image2的畫面應該是一樣的---- 對的,我後來檢查我的程式,我發現我的確適用tbitamp型態的bmp去給image1跟2,後來我怎麼想辦法把轉換後的hsv去assign給Bmp,在用Image2->Picture->Assign(Bmp);把它秀出來,還是沒有辦法!不知這部分該怎麼解決? 若想把h取出來要怎麼取?像要取rgb其中值,只要B = ptr[i*3]; G = ptri*3 1];R = ptr[i*3 2];就可以取出來,那hsv要怎麼取? **我很想學,但又很不懂,所以一直問蠢問題,希望不要不屑我的問題,嘻嘻嘻**離題囉~,再開個新主題討論吧 |
n890377
一般會員 發表:17 回覆:16 積分:21 註冊:2006-07-13 發送簡訊給我 |
你的問題可以參考以下這位大大的程式: http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=71119
------
. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |