OpenCV——RGB三通道分离

Posted jhcelue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV——RGB三通道分离相关的知识,希望对你有一定的参考价值。

opencv 和 matlab 在处理彩色图像的时候。通道的存储顺序是不同的。

matlab 的排列顺序是R,G,B; 而在opencv中,排列顺序是B,G,R。

 

以下通过一个小程序看看opencv中的三个通道。


// PS_Algorithm.h

#ifndef PS_ALGORITHM_H_INCLUDED
#define PS_ALGORITHM_H_INCLUDED

#include <iostream>
#include <string>
#include "cv.h"
#include "highgui.h"
#include "cxmat.hpp"
#include "cxcore.hpp"

using namespace std;
using namespace cv;

#endif // PS_ALGORITHM_H_INCLUDED


// Public_Function.h

#ifndef PUBLIC_FUNCTION_H_INCLUDED
#define PUBLIC_FUNCTION_H_INCLUDED

#include <iostream>
#include <string>
#include "cv.h"
#include "highgui.h"
#include "cxmat.hpp"
#include "cxcore.hpp"

using namespace std;
using namespace cv;

void Show_Image(Mat&, const string &);
void Save_Image(Mat&, const string &);

#endif // PUBLIC_FUNCTION_H_INCLUDED


/*
The program will Divides multi-channel array
into several single-channel arrays.
We can get the single-channel from a multi-channel
image.
*/

#include "PS_Algorithm.h"
#include "Public_Function.h"
using namespace std;
using namespace cv;

int main()
{
    string Img_name("4.jpg");
    Mat Image_in;
    Image_in=imread(Img_name);
    Show_Image(Image_in, Img_name);


    // convert the type of the image.
    // from the uchar to the float.
    Mat Image_2(Image_in.size(), CV_32FC3);
    Image_in.convertTo( Image_2, CV_32FC3);

    Mat r(Image_in.rows, Image_in.cols, CV_32FC1);
    Mat g(Image_in.rows, Image_in.cols, CV_32FC1);
    Mat b(Image_in.rows, Image_in.cols, CV_32FC1);


    Mat out[]={b,g,r};
    split(Image_2, out);

    // 三个通道的顺序是 b,g,r.
    b=out[0]/255;
    g=out[1]/255;
    r=out[2]/255;

    Show_Image(g, "g");
 
    waitKey();
}


原图

技术分享


R 通道

技术分享


G 通道

技术分享


B 通道

技术分享



















































































以上是关于OpenCV——RGB三通道分离的主要内容,如果未能解决你的问题,请参考以下文章

图片的色彩空间转换简单色彩跟踪与通道分离合并

opencv图像混合,分离颜色通道多通道图像混合

学习 opencv--- 分离颜色通道 && 多通道混合

将两个 RGB 图像组合成一个 6 通道图像 - openCV

想要从图像中获取绿色 RGB 通道时出错

opencv学习笔记第六篇:分离颜色通道多通道图像混合和图像对比度亮度值的调整