08 图像通道分离合并与混合个人资料,仅供学习使用
修改时间——2022年2月13日 10:31:08
学习课程:OpenCV4 图像处理与视频分析实战教程
课程讲师:贾志刚
opencv知识点:
通道分离 - split通道合并 - merge通道混合 - mixChannels
本课所解决的问题:
如何分离RGB三通道?如何合并RGB三通道?如何对通道进行混合? 1.通道分离
2.通道合并关于图形绘制与填充,可以阅读 11 通道分离与合并的2小节,文章中非常详细。
3.通道混合关于图形绘制与填充,可以阅读 11 通道分离与合并的3小节,文章中非常详细。
本课所用API查阅 split关于图形绘制与填充,可以阅读 11 通道分离与合并的4小节,文章中非常详细。
char d[] = {1,2,3,4,5,6,7,8,9,10,11,12};
Mat m(2, 2, CV_8UC3, d);
Mat channels[3];
split(m, channels);
Mat m1 = (Mat_mixChannels(2,2) << 1,4,7,10); Mat m2 = (Mat_ (2,2) << 2,5,8,11); Mat m3 = (Mat_ (2,2) << 3,6,9,12); Mat channels[3] = {m1, m2, m3}; Mat m; merge(channels, 3, m);
Mat bgra( 100, 100, CV_8UC4, Scalar(255,0,0,255) );
Mat bgr( bgra.rows, bgra.cols, CV_8UC3 );
Mat alpha( bgra.rows, bgra.cols, CV_8UC1 );
// forming an array of matrices is a quite efficient operation,
// because the matrix data is not copied, only the headers
Mat out[] = { bgr, alpha };
// bgra[0] -> bgr[2], bgra[1] -> bgr[1],
// bgra[2] -> bgr[0], bgra[3] -> alpha[0]
int from_to[] = { 0,2, 1,1, 2,0, 3,3 };
mixChannels( &bgra, 1, out, 2, from_to, 4 );



