2012-11-09 56 views
1

我使用OpenCV 2.4.3進行前景檢測。我想將二進制的結果前景轉換成RGB圖像。我的代碼是這樣的:在OpenCV中將二進制圖像轉換爲RGB

cv::VideoCapture cap; 
cap.open ("test.avi "); 
cv::Mat img; 
cv::Mat finalForeground; 
cv::Mat element(3, 3, CV_8U, cv::Scalar(1)); 
cv::gpu::GMG_GPU gmgGpu 

gmgGpu.initialize (cv::Size (1600, 1200)); 
cv::gpu::GpuMat gpuForeground; 
cv::Mat rgbForeground; 

for (int i = 0; i < 500; i ++) 
{ 
    cap >> img; 
    cv::gpu::GpuMat gpuImg (img);  
    gmgGpu.operator()(gpuImg, gpuForeground); 
    gpuForeground.download (finalForeground); 
    cv::morphologyEx (finalForeground, finalForeground, CV::MORPH_CLOSE, element); 
    cvCvtColor (finalForeground, rgbForeground, CV_GRAY2BGR); 
} 

然後我得到了這樣的錯誤:

錯誤C2664: 'cvCvtColor':無法從 'CV ::墊' 轉換參數2「CvArr *」

無可用的能夠執行這種轉換,或操作員不能被稱爲用戶定義的轉換運算符

有人可以給出處理這個錯誤的建議嗎?謝謝。

+0

你是什麼意思? Opencv不會從無到有創造出色彩。如果這個圖像是灰色的,那麼很可能三個迴歸通道會被賦予相同的值,因此您仍然會看到一個BW圖像 – jlengrand

回答

4

您可能不應混用C和C++符號。

嘗試使用cv::CvtColor代替cvCvtColor

關於你的第二個問題,您使用的CV ::具有三個通道的輸入和輸出CvtColor?

+0

謝謝,我將它用作「cv :: cvtColor」,並且解決了該錯誤。 –

+0

關於這個問題的另一個問題:) – jlengrand

相關問題