在項目中遇到一個問題,調用別人編好的庫需要傳入三通道的彩色圖像。但是我的圖像經過處理後已經是二值化的圖像了,所以得想想辦法了。
分析:三通道的彩色圖像就是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>
}