บทนำ
ภาพ RGB มี 3 ช่องสี: Blue, Green, Red (OpenCV ใช้ลำดับ BGR) ฟังก์ชัน split() ใช้แยกภาพหลายช่องสีเป็นภาพ Single Channel หลายภาพ
Syntax
split(src, mv); // mv คือ vector<Mat> หรือ Mat array[3]
ตัวอย่างโค้ด
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main() {
Mat src;
Mat channels[3]; // อาร์เรย์ 3 เมทริกซ์
src = imread("RGB.png");
split(src, channels); // แยกช่องสี
Mat b = channels[0]; // Blue channel
Mat g = channels[1]; // Green channel
Mat r = channels[2]; // Red channel
imshow("Blue Channel", b);
imshow("Green Channel", g);
imshow("Red Channel", r);
imshow("Actual_Image", src);
waitKey(0);
destroyAllWindows();
return 0;
}
ฟังก์ชันคู่กัน: merge()
// รวม 3 ช่องกลับเป็นภาพสี
Mat merged;
Mat channels[] = {b, g, r};
merge(channels, 3, merged);
การประยุกต์: ปรับแต่งช่องสีเดี่ยว
// เพิ่มความสว่างเฉพาะช่อง Red
channels[2] = channels[2] + 50; // หรือใช้ add()
merge(channels, 3, result);
ผลลัพธ์

สรุป
- split(): แยก Multi-channel → Multiple Single-channel
- merge(): รวม Multiple Single-channel → Multi-channel
- OpenCV ใช้ลำดับ BGR (0=Blue, 1=Green, 2=Red)
- แต่ละช่องหลัง split เป็น Grayscale image แสดงความเข้มของสีนั้น