环境 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版权协议,转载请附上原文出处链接和本声明。