Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Cách tách ảnh thành các kênh màu trong OpenCV bằng C++

Ảnh RGB có 3 kênh: đỏ, xanh lá, xanh dương. OpenCV dùng thứ tự BGR: kênh 1 là xanh dương, kênh 2 là xanh lá, kênh 3 là đỏ. Để tách kênh, khai báo ma trận 3 kênh Mat different_Channels[3].

Dùng hàm split(Source Matrix, Destination Matrix) để tách ảnh. Sau đó tải từng kênh vào ma trận riêng:

Mat b = different_Channels[0]; // blue
Mat g = different_Channels[1]; // green
Mat r = different_Channels[2]; // red

Ví dụ

#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;

int main(int argc, const char** argv) {
    Mat myImage;
    Mat different_Channels[3];
    myImage = imread("RGB.png");
    split(myImage, different_Channels);
    Mat b = different_Channels[0];
    Mat g = different_Channels[1];
    Mat r = different_Channels[2];
    imshow("Blue Channel", b);
    imshow("Green Channel", g);
    imshow("Red Channel", r);
    imshow("Actual_Image", myImage);
    waitKey(0);
    destroyAllWindows();
    return 0;
}

Kết quả

Cách tách ảnh thành các kênh màu trong OpenCV bằng C++