2012-12-15 54 views
2

我想將許多圖像合成到openCV中的單個窗口中。我發現我可以在一個圖像中創建一個ROI,並將另一個彩色圖像複製到該區域中,而不會出現任何問題。在opencv中如何將灰度圖像複製並縮放到另一個彩色圖像

將源圖像切換到我已經進行了一些處理的圖像,但沒有工作。

最終我發現我已經將src圖像轉換爲灰度圖,並且在使用copyTo方法時,它不會複製任何東西。

我已經用我的基本解決方案回答了這個問題,該解決方案僅適用於灰度到彩色。如果您使用其他Mat圖片類型,則必須執行其他測試和轉換。

回答

4

我意識到我的問題是我試圖將灰度圖像複製到彩色圖像。因此,我必須先將其轉換爲適當的類型。

drawIntoArea(Mat &src, Mat &dst, int x, int y, int width, int height) 
{ 
    Mat scaledSrc; 
    // Destination image for the converted src image. 
    Mat convertedSrc(src.rows,src.cols,CV_8UC3, Scalar(0,0,255)); 

    // Convert the src image into the correct destination image type 
    // Could also use MixChannels here. 
    // Expand to support range of image source types. 
    if (src.type() != dst.type()) 
    { 
     cvtColor(src, convertedSrc, CV_GRAY2RGB); 
    }else{ 
     src.copyTo(convertedSrc); 
    } 

    // Resize the converted source image to the desired target width. 
    resize(convertedSrc, scaledSrc,Size(width,height),1,1,INTER_AREA); 

    // create a region of interest in the destination image to copy the newly sized and converted source image into. 
    Mat ROI = dst(Rect(x, y, scaledSrc.cols, scaledSrc.rows)); 
    scaledSrc.copyTo(ROI); 
} 

花了我一段時間才意識到圖像源類型不同,我忘記了我會將圖像轉換爲其他處理步驟的灰度。

相關問題