Преобразовать Mat в IplImage * в OpenCV и C / C

#c #opencv #iplimage

#c #opencv #iplimage

Вопрос:

в моем приложении у меня есть файл Mat, который я хотел бы показать в окне с cvShowImage, который определяется как:

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

Теперь проблема в том, что если я передаю непосредственно Mat-изображение, это выдает ошибку преобразования:

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

Я попытался найти на этом форуме кого-нибудь с такой же проблемой и нашел эту документацию по 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));
  

но это выдает мне ошибку coversion.

Я надеюсь, вы сможете мне помочь,

большое спасибо!

Ответ №1:

Почему вы пытаетесь использовать интерфейс C с типами данных C ? Используйте интерфейс C .

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

Комментарии:

1. Большое спасибо! Я думаю, что это лучшее решение для моего случая

2. даже namedWindow на самом деле не нужен. У некоторых даже возникают проблемы с этим на некоторых платформах.

3. @karlphillip проблема, должно быть, в том, что многие преподаватели / учебные материалы привыкли к IplImage, и нет хорошего широко известного ресурса о том, как перейти с использования IplImage на Mat’s.

4. @BarnabasSzabolcs Может быть. Я просто рад, что у нас есть Stackoverflow 🙂

Ответ №2:

Попробуйте это:

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

КСТАТИ. Возможно, действительно было бы лучше использовать функции C OpenCV для отображения изображений, это должно быть проще, и вы не будете беспокоиться о том, очистили ли вы всю выделенную память или нет (полезно взглянуть на пример кода здесь:http://opencv.willowgarage.com/documentation/cpp/introduction.html ).

Комментарии:

1. Я также пробовал это решение, но я использую советы etarion, потому что это немного быстрее.