Ả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ả
