OpenCV中的split函數


split函數的功能是通道分離

函數原型為:

void split(const Mat& src,Mat *mvBegin);  

第一個參數為要進行分離的圖像矩陣,第二個參數可以是Mat數組的首地址,或者一個vector<Mat>對象第一個參數為要進行分離的圖像矩陣,第二個參數可以是Mat數組的首地址,或者一個vector<Mat>對象

std::vector<Mat> channels;  
Mat aChannels[3];  
//src為要分離的Mat對象  
split(src, aChannels);              //利用數組分離  
split(src, channels);               //利用vector對象分離  
  
imshow("B",channels[0]);  
imshow("G",channels[1]);  
imshow("R",channels[2]); 

注意:opencv中,RGB三個通道是反過來的

可能有人會問為什么分離出的通道都是黑白灰,而不是紅綠藍。原因是分離后為單通道,相當於分離通道的同時把其他兩個通道填充了相同的數值。比如紅色通道,分離出紅色通道的同時,綠色和藍色被填充為和紅色相同的數值,這樣一來就只有黑白灰了。那么紅色體現在哪呢?可以進行觀察,會發現原圖中顏色越接近紅色的地方在紅色通道越接近白色。在純紅的地方在紅色通道會出現純白。

此外,如果split函數輸入的圖像為HSV的,則分離后,channels[0]對應H,channels[1]對應S,channels[2]對應V

注:此為轉載原文地址為

http://blog.csdn.net/alickr/article/details/51503133

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM