HSI顏色空間和RGB顏色空間之間的相互轉換

2021-08-10 02:48:17 字數 2081 閱讀 3139

具體的數學公式參照岡薩雷斯版《數字影象處理(第三版)》432-434頁,中譯版的260-261頁。

下面貼**:

1 #include "

opencv_libs.h

"2 #include 3 #include 4 #include 56/*

7* 描述:實現rgb顏色模型到hsi顏色模型之間的相互轉換89

10*/

1112

//將hsi顏色空間的三個分量組合起來,便於顯示

13 iplimage* cathsimage(cvmat* hsi_h, cvmat* hsi_s, cvmat*hsi_i)

1430}31

32return

hsi_image;33}

3435

//將hsi顏色模型的資料轉換為rgb顏色模型的影象

36 iplimage* hsi2rgbimage(cvmat* hsi_h, cvmat* hsi_s, cvmat*hsi_i)

3762

//gb扇區

63else

if(dh < 240 && dh >= 120)64

74//

br扇區

75else

7686

87 ib = dtempb * 255

;88 ig = dtempg * 255

;89 ir = dtempr * 255;90

91cvset2d( rgb_image, i, j, cvscalar( ib, ig, ir ) );92}

93}9495

return

rgb_image;96}

9798

99int

main()

100151

else

152155

}156

else

157160

161//

賦值162

cvmset( hsi_h, i, j, fhue );

163cvmset( hsi_s, i, j, fsaturation);

164cvmset( hsi_i, i, j, fintensity );

165}

166}

167168 iplimage* hsi_image =cathsimage( hsi_h, hsi_s, hsi_i );

169 iplimage* rgb_image =hsi2rgbimage( hsi_h, hsi_s, hsi_i );

170171 cvshowimage("

img"

, img);

172 cvshowimage("

hsi color model

", hsi_image);

173 cvshowimage("

rgb color model

", rgb_image);

174175 cvwaitkey(0

);176

177 cvreleaseimage( &img );

178 cvreleaseimage( &hsi_image );

179 cvreleaseimage( &rgb_image );

180 cvreleasemat( &hsi_h);

181 cvreleasemat( &hsi_s);

182 cvreleasemat( &hsi_i);

183184

cvdestroyallwindows();

185186

return0;

187 }

測試影象為彩色lena圖,執行結果如下:

RGB轉HSI顏色空間

顯示原圖 def rgb2hsi rgb img row np.shape rgb img 0 col np.shape rgb img 1 對原始影象進行複製 hsi img rgb img.copy 對影象進行通道拆分 b,g,r cv2.split rgb img 把通道歸一化到 0,1 b,...

RGB和HSV顏色空間

rgb顏色空間 rgb red,green,blue 顏色空間最常用的用途就是顯示器系統,彩色陰極射線管,彩色光柵圖形的顯示器都使用r g b數值來驅動r g b電子槍發射電子,並分別激發螢光屏上的r g b三種顏色的螢光粉發出不同亮度的光線,並通過相加混合產生各種顏色 掃瞄器也是通過吸收原稿經反射...

RGB顏色空間轉換為HSV空間顏色值

void rgb2hsv float r,float g,float b,float h,float s,float v if r max h g b delta between yellow magenta else if g max h 2 b r delta between cyan yell...