前言
在机器学习和深度学习的时候,对图像进行处理时,会遇到明明是给的三通道的图像,但因为是黑白的,程序判断为单通道的图像,这样让人很无语,还有有时候有些库必须要传入三通道的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;
}
转换的结果也是得到一张黑白图像,但此时已经是三通道的黑白图像了,意思就是把程序给骗过去而已。