void QuickDemo::channels_demo(Mat & image)
{
std::vector<Mat>mv;
//通道分离合并
split(image,mv);//原图 指针(Mat)
imshow("蓝色", mv[0]);
imshow("绿色", mv[1]);
imshow("红色", mv[2]);
}
split(image,mv);//原图 指针(Mat)
这里split后一个是指针 但是我们并没有看到指针在哪,就看到一个数据类型Mat和数组vetcor
经过查阅,
//Mat(matrice)基本结构 (头部 数据部分)
//这部分的大小是固定的,包含矩阵的大小,存储的方式,矩阵存储的地址等等;
//另一个部分是一个指向矩阵包含像素值的指针(data)。
经过运行
将代码修改成如下这样
void QuickDemo::channels_demo(Mat & image)
{
std::vector<Mat>mv;
//通道分离合并
split(image,mv);//原图 指针(Mat)
imshow("蓝色", mv[0]);
imshow("绿色", mv[1]);
imshow("红色", mv[2]);
Mat dst;
mv[1] = 0;
mv[2] = 0;
merge(mv, dst);//合并
imshow("蓝色", dst);
}
将其他两个通道改为0 0 现在通道颜色为255 0 0 为蓝色 可以显示
其余两个类似操作 满足 BGR
通道混合
int from_to[] = { 0,1,1,0,2,2 };//0通道跑到1 1到0 2不变
mixChannels(image,dst, from_to,3);//一个image 一个dst 三个通道
imshow("通道混合", dst);