zoukankan      html  css  js  c++  java
  • [学习opencv]彩色图像通道分离、合成

    将彩色图像RGB三色分离出来是一个很有意义的操作。

    用到void split(const Mat& mtx,vector<Mat>&  mv),void merge(const vector<Mat>& mv,Mat& dst)这两个函数。

    #include "cv.h"
    #include "highgui.h"
    #include <iostream>
    #include <vector>
    
    using namespace std;
    using namespace cv;
    
    int main(int argc, char* argv[])
    {
            Mat src = imread("misaka.jpg");
            Mat dst;
            vector<Mat> bgr;
    
            //颜色通道分离
            //输入图像
            //分离后各通道
            split(src,bgr);
    
            //颜色通道合成
            //输入各通道
            //输入图像
            merge(bgr,dst);
            imshow("dst",dst);
    
            //用彩色图像形象的表示一下,除了原通道保留,其余两通道置0
            Mat tmp(src.size(),CV_8U,Scalar(0));
            vector<Mat> b,g,r;   //用来表示的彩色图像
            for(int i=0;i<3;i++)
            {
                    if(i==0)
                            b.push_back(bgr[0]);
                    else
                            b.push_back(tmp);
    
                    if(i==1)
                            g.push_back(bgr[1]);
                    else
                            g.push_back(tmp);
    
                    if(i==2)
                            r.push_back(bgr[2]);
                    else
                            r.push_back(tmp);
            }
    
            merge(b,dst);
            imshow("b",dst);
    
            merge(g,dst);
            imshow("g",dst);
    
            merge(r,dst);
            imshow("r",dst);
    
            waitKey();
            return 0;
    }

    原图:

    b通道:

    g通道:

    r通道:

  • 相关阅读:
    Java实现 LeetCode 715 Range 模块(选范围)
    HTML 图像
    HTML 样式- CSS
    HTML <head>
    HTML 链接
    HTML 文本格式化
    目标检测中的anchor-based 和anchor free
    目标检测coco数据集点滴介绍
    Camera HDR Algorithms
    噪声标签的负训练:ICCV2019论文解析
  • 原文地址:https://www.cnblogs.com/tiandsp/p/3039218.html
Copyright © 2011-2022 走看看