【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&amp; binImg)
{
<span class="hljs-code">    Mat three_channel = Mat::zeros(binImg.rows,binImg.cols,CV_8UC3);</span>
<span class="hljs-code">    vector&lt;Mat&gt; channels;</span>
<span class="hljs-code">    for (int i=0;i&lt;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>
}

轉載自

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章