2011-05-30 32 views
5
Ben olarak tanımlanan cvShowImage bir pencerede göstermek istediğim bir Mat dosyası var benim uygulamada

: Artıkdönüştürme Mat ve C/C++

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

, sorun

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

Ben aynı sorunu olan biri için bu forumun arama uğraş ve ben bu opencv belgelerine bulundu: http://opencv.willowgarage.com/documentation/cpp/c++_cheatsheet.html

i doğrudan Mat görüntü geçmesi halinde, bu bana bir hata dönüşümünü sağlamasıdır

Ama nasıl kullanacağımı anlamadım.

Birisi bana Mat görüntüsünü IplImage'a dönüştürme hakkında bir örnek verebilir mi, lütfen?

Bu

benim kodudur:

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

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

ama bana bir hata Coversion verir. Bana yardımcı olabilir umuyoruz

,

çok teşekkürler!

cevap

6

C arabirimini C++ veri türleri ile neden kullanmaya çalışıyorsunuz? C++ arayüzünü kullanın.

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

+1 Tam olarak ne söyleyecektim. – karlphillip

+0

Çok teşekkürler! Benim durumumda –

+0

için daha iyi bir çözüm olduğunu düşünüyorum, namedWindow gerçekten gerekli değil. Bazılarının bazı platformlarda bile problemleri var. –

1

bu deneyin: BTW

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

. Belki de C++ OpenCV fonksiyonlarını kullanmak için kullanmak gerçekten daha iyi olacaktır, daha kolay olmalı ve tüm ayrılmış belleği temizleyip temizlemediğiniz konusunda kendinizle ilgili endişeleriniz olmayacaktır (örnek koduna göz atmak iyidir): http://opencv.willowgarage.com/documentation/cpp/introduction.html).

+0

Ayrıca bu çözümü denedim, ama etaryon önerileri kullanıyorum çünkü biraz daha hızlı. –