cv::Mat三通道与单通道互相转换

在处理图像的过程中,经常用到三通道与单通道图像相互转换。

先需要知道:OpenCV中存储三通道图像具体数据的方式是BGR BGR BGR………


具体实现:

    cv::Mat SrcMat = cv::imread("1.jpg",1);                           // 1.jpg为三通道图像

    std::vector<cv::Mat>SrcMatpart(SrcMat.channels());      //生成与通道数数目相等的图像容器

    cv::split(SrcMat,SrcMatpart);                                          //解与通道数数目相等的图像容器

    cv::Mat MergeMat;

    cv::merge(SrcMatpart,MergeMat);                                //成与通道数数目相等的图像容器


详细分析, SrcMat被分为SrcMatpart[0]、 SrcMatpart[1]、SrcMatpart[2]三部分。

SrcMatpart[0]存储B颜色分量,SrcMatpart[1]存储G颜色分量,SrcMatpart[2] 存储R颜色分量。

MergeMat为合成后BGR分量后的图片。

 

SrcMat数据:53 1d 3b 58 20 3d 5c 22 3f 5f 24 40 61 27 40 61 27 40 5d 27 3e 5e 283f 5d 26 3f 5e 27 40 5d 26 41 5c 25 40 5f 28 43 60 29 42

SrcMatpart[0]:53 58 5c 5f 61 61 5d 5e 5d 5e 5d 5c 5f 60……….

SrcMatpart[1]:1d 20 22 24 27 27 27 28 26 27 26 25 28 29…………..

SrcMatpart[2]:3b 3d 3f 40 40 40 3e 3f 3f 40 41 40 43 42 …………..

MergeMat数据: 53 1d 3b 58 20 3d 5c 22 3f 5f 24 40 61 27 40 61 27 40 5d 27 3e 5e28 3f 5d 26 3f 5e 27 40 5d 26 41 5c 25 40 5f 28 43 60 29 42

 

对彩色图像来说,三通道中数据不同,分别表示颜色分量。对黑白图像来说,三个通道数据完全相同。

建议不再使用IplImage结构类型描述图像。


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值