討論區快速選單
知識庫快速選單
程式設計俱樂部Facebook粉絲團 掌握Salesforce雲端管理秘訣 政府補助!學嵌入式+物聯網
[ 回上頁 ] [ 討論區發言規則 ]
Normalized RGB
更改我的閱讀文章字型大小
作者 : mattufo0326(嫩嫩)
[ 貼文 7 | 人氣 153 | 評價 40 | 評價/貼文 5.71 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/4 上午 11:02:34
請問,我讀出影像中的RGB值想轉換成Normalized RGB,結果變數資料有誤。下列是我的程式碼,請問哪裡有錯,小弟作業系統為XP VC2008 OPENCV2.0

for( int y = 0; y < src->height; y++ )
{
   for( int x = 0; x < src->width; x++ )
   {
     int R = src[y][x].r;
     int G = src[y][x].g;
     int B = src[y][x].b;
     double NR = R / ( R + G + B );
     doubel NG = G / ( R + G + B );
   }
}

程式執行時,NR與NG的值都會為0,是我變數設錯了嗎??
請各位大大幫忙,謝謝。
作者 : ma_hty(白老鼠(Gary))討論區板主 OpenGL卓越專家DirectX優秀好手C++頂尖高手貼文超過2000則人氣指數超過70000點
[ 貼文 2189 | 人氣 89850 | 評價 10120 | 評價/貼文 4.62 | 送出評價 79 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人mattufo0326註記此篇回應為最佳解答 2010/3/4 下午 01:45:45
把 顏色 normalize 這個行動有點奇怪, 但願你真的明確地知道你在做什麼.

> double NR = R / ( R + G + B );
> doubel NG = G / ( R + G + B );
這兩句寫錯了, 它們應該是...
  double NR = double(R) / ( R + G + B );
  double NG = double(G) / ( R + G + B );
作者 : mattufo0326(嫩嫩)
[ 貼文 7 | 人氣 153 | 評價 40 | 評價/貼文 5.71 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/4 下午 03:21:13
請問ma_hty大大,

double( R ) 與直接使用 R 有什麼不同??

麻煩大大了
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4499 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人mattufo0326註記此篇回應為很有道理 2010/3/4 下午 03:37:30
double NR = R / ( R + G + B );
doubel NG = G / ( R + G + B );

>because the right hand side expression all variables R , G, and B are integers , the result is a integer.
for example , R = 1 , G = 2, B = 3 , R/(R+G+B) = 1/(1+2+3 ) = 0 , this is a integeral divison. it just gets integeral part . if you use static cast (double) R/ (double) ( R+G+B) , the result will take a double variable.
So the above example , the result is 1/6 =1.1666666667 ( depends on compiler gaven double number's representation range )
 
作者 : mattufo0326(嫩嫩)
[ 貼文 7 | 人氣 153 | 評價 40 | 評價/貼文 5.71 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/4 下午 03:59:11
謝謝ozzy123大大,我已經瞭解形態上的錯誤了。
作者 : ma_hty(白老鼠(Gary))討論區板主 OpenGL卓越專家DirectX優秀好手C++頂尖高手貼文超過2000則人氣指數超過70000點
[ 貼文 2189 | 人氣 89850 | 評價 10120 | 評價/貼文 4.62 | 送出評價 79 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/5 上午 01:10:39
>double NR = R / ( R + G + B );
>doubel NG = G / ( R + G + B );
>
>>because the right hand side expression all variables R , G, and B are integers , the result is a integer.
>for example , R = 1 , G = 2, B = 3 , R/(R+G+B) = 1/(1+2+3 ) = 0 , this is a integeral divison. it just gets integeral part . if you use static cast (double) R/ (double) ( R+G+B) , the result will take a double variable.
>So the above example , the result is 1/6 =1.1666666667 ( depends on compiler gaven double number's representation range )
>

Using English in a Chinese forum is a very bad idea. I remembered
that I had reminded you before. Just imagine what would happen
if you post something in a English forum in Chinese, you will see how
bad it can be. Besides, the grammar of your writing looks funny.
Nearly every sentence you wrote contains grammatical mistakes.
I just couldn't figure out why you preferred to use English. @@?!

By the way, we have "integer division" for the integer parts of
quotients and "integral" for the results of integrations, but we
don't have such a term called "integeral divison". Please
be accurate when you use technical terms.





 板主 : 徵求中
 > 影像處理與計算機圖學 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 影像處理與計算機圖學 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
影像處理與計算機圖學
1 Linkin 780 
2 CrazyStar 400 
3 青衫 360 
4 白老鼠(Gary) 330 
5 悠悠深藍 220 
6 none 220 
7 shou 200 
8 ultra 200 
9 ghost 140 
10 ozzy 130 
影像處理與計算機圖學
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
4.602051E-02