2011-05-30 236 views
5

在我的應用我有我想與cvShowImage一個窗口,它被定義爲表現出墊文件:轉換墊的IplImage * OpenCV中和C/C++

void cvShowImage(const char* name, const CvArr* image) 

現在的問題是,如果我通過直接墊圖像,它給了我一個錯誤的轉換:

cannot convert 'cv::Mat' to 'const CvArr*' for argument '2' to 'void cvShowImage(const char*, const CvArr*)' 

我tryed在這個論壇上有同樣的問題,找一個和我發現這個OpenCV的文檔: http://opencv.willowgarage.com/documentation/cpp/c++_cheatsheet.html

但我不明白如何使用它。

有人可以給我一個如何將mat圖像轉換爲IplImage的例子嗎?

這是我的代碼:

Mat file; 
Mat hogResultFrame = hogStep(temp2); 
file = hogResultFrame; 

    cvShowImage(window_title, (const CvArr*)(file)); 

,但它給我一個錯誤:丁文。

希望你能幫助我,

非常感謝!

回答

6

爲什麼你嘗試在C++數據類型中使用C接口?使用C++接口。

cv::namedWindow(window_title, 1); 
cv::imshow(window_title, file); 
+0

+1正是我要說的。 – karlphillip 2011-05-30 13:38:49

+0

非常感謝!我認爲這對我的案例 – 2011-05-30 14:08:16

+0

來說是更好的解決方案,namedWindow並不是真的有必要。有些甚至在某些平臺上遇到問題。 – 2012-11-23 15:13:36

1

試試這個:

IplImage image = file; 
cvShowImage(window_title, &image); 

BTW。也許使用C++ OpenCV函數來顯示圖像真的會更好,它應該更容易,並且不會讓你擔心是否清除了所有分配的內存(這裏很好看一下示例代碼: http://opencv.willowgarage.com/documentation/cpp/introduction.html)。

+0

我也試過這個解決方案,但我使用etarion的建議,因爲它有點快。 – 2011-05-30 14:07:44