opencv彩色图像通道分离

环境 win7 + vs2015 + Opencv2.4.13


OpenCV-颜色通道的分离 

opencv中有 split函数,主要功能是把一个彩色图像分割成3个通道,方便进一步的图像处理


自己的代码实现:

#include "opencv2/opencv.hpp"  
#include <iostream> 

using namespace cv;
using namespace std;

int main(int argc, char** argv) {
	
	Mat img = imread("6.jpg");
	imshow("0", img);
	Mat img1(img.rows, img.cols, CV_8UC1, Scalar(0, 0, 0)); 
	Mat img2(img.rows, img.cols, CV_8UC1, Scalar(0, 0, 0));
	Mat img3(img.rows, img.cols, CV_8UC1, Scalar(0, 0, 0));

	int nr = img.rows;
	int nl = img.cols;
	for (int k = 0; k < nr; k++)
	{
		const uchar* inData = img.ptr<uchar>(k);
		uchar* outData1 = img1.ptr<uchar>(k);
		uchar* outData2 = img2.ptr<uchar>(k);
		uchar* outData3 = img3.ptr<uchar>(k);
		for (int i = 0; i < nl; i++)
		{
			outData1[i] = inData[3*i];
			outData2[i] = inData[3*i+1];
			outData3[i] = inData[3*i+2];
		}
	}
	imshow("B", img1);
	imshow("G", img2);
	imshow("R", img3);

	waitKey(0);
	return 0;
}
使用split函数
int main(int argc, char** argv) {
	
	Mat img = imread("6.jpg");
	imshow("0", img);
	
	Mat image[3];
	split(img, image);              
	            
	imshow("B", image[0]);
	imshow("G", image[1]);
	imshow("R", image[2]);

	waitKey(0);
	return 0;
}


分离为单通道后,图像颜色都显示为黑白灰。






版权声明:本文为qq_38875908原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。