Opencv中RGB通道/HSV通道並分離

 OpenCV中HSV顏色模型及顏色份量範圍html

opencv HSV 顏色模型(H通道取值 && CV_BGR2HSV_FULL)url

【opencv】在hsv顏色空間識別區域顏色spa

  將原圖分離爲RGB單通道和B三通道(GR通道均爲0).net

 1     Mat src_color = imread(path);  2     vector<Mat> channels;  3     vector<Mat> mbgr(3);  4  split(src_color, channels);  5     Mat B = channels.at(0);  6     Mat G = channels.at(1);  7     Mat R = channels.at(2);  8     Mat bk1(src_color.size(), CV_8UC1, Scalar(0));  9  Mat imageB(src_color.size(), CV_8UC3); 10     mbgr[0] = B; 11     mbgr[1] = bk1; 12     mbgr[2] = bk1; 13  merge(mbgr, imageB); 14     imshow("imageB", imageB); 15     imshow("原圖", src_color); 16     imshow("B", B); 17     imshow("G", G); 18     imshow("R", R); 19     waitKey(0);

 

 

 

 

  利用opencv把RGB圖片像HSV顏色空間轉變的時候,H通道的值範圍爲: 0-180,S: 0-255,V:0-255。code

  利用直方圖顯示三個通道的時候,H通道都集中在前半部分,想讓它取值範圍擴大。後來發現了   CV_BGR2HSV_FULL  ,CV_BGR2HSV 在轉換圖像的時候是將 H / 2  --->  H ,咱們知道圖像中色相H的取值範圍爲 0-360 ,因此利用opencv轉換以後獲得的H的範圍爲 0-180。而   CV_BGR2HSV_FULL   實現的映射是 H * 255 / 360 --->H , 因此利用_FULL 這個轉換獲得的H通道圖像的範圍爲 0-255這兩種方式都是opencv把[0-360] 的數據壓縮到一個字節能夠處理的數據。[ 因此這裏說的圖像的depth = 8, 恰好能表示的最大值是 255]htm

 1 Mat src_hsv;  2 cvtColor(src_color, src_hsv, CV_BGR2HSV_FULL);  3 //cvtColor(src_color, src_hsv, CV_BGR2HSV);
 4 vector<Mat> hsv_channels;  5 split(src_hsv, hsv_channels);  6 Mat H = hsv_channels.at(0);  7 Mat S = hsv_channels.at(1);  8 Mat V = hsv_channels.at(2);  9 imshow("H", H); 10 imshow("S", S); 11 imshow("V", V);

相關文章
相關標籤/搜索