zoukankan      html  css  js  c++  java
  • opencv3.2.0 分离颜色通道&多通道图像混合

    ##名称:分离颜色通道&多通道图像混合
    ##平台:QT5.7.1+OpenCV3.2.0
    ##时间:2017年12月11日
    /***************创建QT控制台程序*******************/
    #include <QCoreApplication>
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/imgproc/imgproc.hpp>
    #include <iostream>
    using namespace std;
    using namespace cv;
    
    int main()
    {
        //定义相关变量
        Mat image;
        Mat imageGray;
        Mat imageGreenChannel,imageBlueChannel,imageRedChannel;
        Mat imageBlue,imagePurple,imageGreen,imageYellow,imageRed;
        vector<Mat> channels;
    
        image = imread("/home/ttwang/Valley_logo.jpg");       //读入原图
        imageGray = imread("/home/ttwang/Valley_logo.jpg",0); //读入灰度图
    
        /***************得到蓝色通道图和紫色通道图*****************/
        split(image,channels);//分离彩色通道
    
        imageBlueChannel = channels.at(0); //蓝色通道的引用返回给imagBlueChannel
        addWeighted(imageBlueChannel,1.0,imageGray,0.5,0,imageBlueChannel);//混合后的蓝色通道
    
        merge(channels,imageBlue);//此时蓝色通道已经变味了,
                             //再通过merge将三个通道重新合并成一个三通道,便得到蓝色通道图
    
        imageRedChannel = channels.at(2);  //在上面处理后的基础上,分离红色通道,可得到紫色通道图
        addWeighted(imageRedChannel,1.0,imageGray,0.5,0,imageRedChannel);
        merge(channels,imagePurple);
    
        imshow("blue",imageBlue);
        imshow("purple",imagePurple);
    
        /***************得到绿色通道图和黄色通道图*****************/
        split(image,channels);//要想出现绿色的图像,需要对原图进行重新分离
        imageGreenChannel = channels.at(1);
        addWeighted(imageGreenChannel,1.0,imageGray,0.5,0,imageGreenChannel);
        merge(channels,imageGreen);
    
        imageGreenChannel = channels.at(2);
        addWeighted(imageRedChannel,1.0,imageGray,0.5,0,imageRedChannel);
        merge(channels,imageYellow);
    
        imshow("green",imageGreen);
        imshow("yellow",imageYellow);
    
        /***************得到红色通道图*****************/
        split(image,channels);
        imageRedChannel = channels.at(2);
        addWeighted(imageRedChannel,1.0,imageGray,0.5,0,imageRedChannel);
        merge(channels,imageRed);
    
        imshow("red",imageRed);
        waitKey(0);
        return 0;
    }

    运行结果:

  • 相关阅读:
    北京初“探”,还是初“谈”
    hadoop集群安装(多机,非伪集群)
    iOS8下注冊push方式变更
    Linux文件编辑命令具体整理
    HDU 1260
    二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)
    关于Linux静态库和动态库的分析
    JavaScript特效之前进,后退(返回上一级)
    具体解释Hibernate中的事务
    iOS开发
  • 原文地址:https://www.cnblogs.com/ilym/p/8023355.html
Copyright © 2011-2022 走看看