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

前言

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

Mat类型转换

Mat channelSwitching(const Mat& src)
{
    Mat three_channel = Mat::zeros(src.rows,src.cols,CV_8UC3);
    vector 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; 
}

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

你可能感兴趣的:(opencv,Mat,通道转换,类型转换)