#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, потому что это немного быстрее.