在项目中遇到一个问题,调用别人编好的库需要传入三通道的彩色图像。但是我的图像经过处理后已经是二值化的图像了,所以得想想办法了。
分析:三通道的彩色图像就是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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
转载自:https://blog.csdn.net/wx7788250/article/details/70261615