[學習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通道:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM