在项目中遇到一个问题,调用别人编好的库需要传入三通道的彩色图像。但是我的图像经过处理后已经是二值化的图像了,所以得想想办法了。
分析:三通道的彩色图像就是R,G,B三个通道,那么将我的单通道黑白图复制三份merge一下,不就是一张三通道图像了嘛,只不过有颜色只有黑白,实验了一下果然可以用了。
废话不多说,上代码:
/*************************************************
// Method: convertTo3Channels
// Description: 将单通道图像转为三通道图像
// Returns: cv::Mat
// Parameter: binImg 单通道图像对象
*************************************************/
Mat convertTo3Channels(const Mat& binImg)
{
Mat three_channel = Mat::zeros(binImg.rows,binImg.cols,CV_8UC3);
vector<Mat> channels;
for (int i=0;i<3;i++)
{
channels.push_back(binImg);
}
merge(channels,three_channel);
return three_channel;
}