cv::Mat三通道與單通道互相轉換
在處理影象的過程中,經常用到三通道與單通道影象相互轉換。
首先需要知道:OpenCV中儲存三通道影象具體資料的方式是BGR BGR BGR………
具體實現:
cv::Mat SrcMat = cv::imread("1.jpg",1); // 1.jpg為三通道影象
std::vector<cv::Mat>SrcMatpart(SrcMat.channels()); //生成與通道數數目相等的影象容器
cv::split(SrcMat,SrcMatpart);
//分
cv::Mat MergeMat;
cv::merge(SrcMatpart,MergeMat); //合成與通道數數目相等的影象容器
詳細分析, SrcMat被分為SrcMatpart[0]、 SrcMatpart[1]、SrcMatpart[2]三部分。
SrcMatpart[0]儲存B顏色分量,SrcMatpart[1]儲存G顏色分量,SrcMatpart[2] 儲存R顏色分量。
MergeMat為合成後BGR分量後的圖片。
SrcMat資料:53 1d 3b 58 20 3d 5c 22 3f 5f 24 40 61 27 40 61 27 40 5d 27 3e 5e 283f 5d 26 3f 5e 27 40 5d 26 41 5c 25 40 5f 28 43 60 29 42
SrcMatpart[0]:53 58 5c 5f 61 61 5d 5e 5d 5e 5d 5c 5f 60……….
SrcMatpart[1]:1d 20 22 24 27 27 27 28 26 27 26 25 28 29…………..
SrcMatpart[2]:3b 3d 3f 40 40 40 3e 3f 3f 40 41 40 43 42 …………..
MergeMat資料: 53 1d 3b 58 20 3d 5c 22 3f 5f 24 40 61 27 40 61 27 40 5d 27 3e 5e28 3f 5d 26 3f 5e 27 40 5d 26 41 5c 25 40 5f 28 43 60 29 42
對彩色影象來說,三通道中資料不同,分別表示顏色分量。對黑白影象來說,三個通道資料完全相同。
建議不再使用IplImage結構型別描述影象。