OpenCV图像处理使用笔记(三)——单通道的Mat对象强转为三通道的Mat对象

在机器学习和深度学习的图像处理中,会遇到图像通道判断不符的问题,如黑白图像被程序判断为单通道。为使用处理好的单通道Mat,可写函数将其强行转换成三通道Mat,转换后虽仍是黑白图像,但能“骗过”程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在机器学习和深度学习的时候,对图像进行处理时,会遇到明明是给的三通道的图像,但因为是黑白的,程序判断为单通道的图像,这样让人很无语,还有有时候有些库必须要传入三通道的RGB图像,但为了提升处理的速度,我们就已经在别的地方做比如边缘检测啊,外部轮廓提取等操作,此时的图像已经是单通道Mat,为了使用处理好的单通道Mat,可以写个函数把单通道的Mat强行转换成三通道的Mat。

Mat类型转换

Mat channelSwitching(const Mat& src)
{
    Mat three_channel = Mat::zeros(src.rows,src.cols,CV_8UC3);
    vector<Mat> channels;
    if(src.channels() == 0)
    {
        for (int i=0;i<3;i++)
        {
            channels.push_back(src);
        }
        merge(&channels[0], channels.size(), three_channel);
    }
    
   return three_channel; 
}

转换的结果也是得到一张黑白图像,但此时已经是三通道的黑白图像了,意思就是把程序给骗过去而已。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知来者逆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值