【OpenCV】将单通道的Mat对象转换为三通道的Mat
生活随笔
收集整理的这篇文章主要介绍了
【OpenCV】将单通道的Mat对象转换为三通道的Mat
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
在项目中遇到一个问题,调用别人编好的库需要传入三通道的彩色图像。但是我的图像经过处理后已经是二值化的图像了,所以得想想办法了。
分析:三通道的彩色图像就是R,G,B三个通道,那么将我的单通道黑白图复制三份merge一下,不就是一张三通道图像了嘛,只不过有颜色只有黑白,实验了一下果然可以用了。
代码实现:
/**************************************
// Method: convertTo3Channels
// Description: 将单通道图像转为三通道图像
// Returns: cv::Mat
// Parameter: binImg 单通道图像对象
**************************************/
<span class="hljs-strong">*****</span><span class="hljs-strong">*****</span><span class="hljs-strong">*****</span><span class="hljs-strong">*****</span><span class="hljs-strong">*****</span><span class="hljs-strong">*****</span><span class="hljs-strong">*****</span><span class="hljs-strong">*****</span><span class="hljs-strong">*****</span><span class="hljs-emphasis">***</span>*/
Mat convertTo3Channels(const Mat& binImg)
{
<span class="hljs-code"> Mat three_channel = Mat::zeros(binImg.rows,binImg.cols,CV_8UC3);</span>
<span class="hljs-code"> vector<Mat> channels;</span>
<span class="hljs-code"> for (int i=0;i<3;i++)</span>
<span class="hljs-code"> {</span>
<span class="hljs-code"> channels.push_back(binImg);</span>
<span class="hljs-code"> }</span>
<span class="hljs-code"> merge(channels,three_channel);</span>
<span class="hljs-code"> return three_channel;</span>
}
转载自
总结
以上是生活随笔为你收集整理的【OpenCV】将单通道的Mat对象转换为三通道的Mat的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 解决:vs2013 错误1error M
- 下一篇: vs中.exe运行闪退的解决办法