在OpenCV和C / C ++中将Mat转换为IplImage *

时间:2011-05-30 13:13:49

标签: 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));

但它给我一个错误转换。

我希望你能帮助我,

非常感谢!

2 个答案:

答案 0 :(得分:6)

为什么要尝试将C接口与C ++数据类型一起使用?使用C ++接口。

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

答案 1 :(得分:1)

试试这个:

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

顺便说一句。也许使用C ++ OpenCV函数来显示图像真的会更好,它应该更容易,你不会担心是否已经清理了所有已分配的内存(在这里看一下示例代码是好的: http://opencv.willowgarage.com/documentation/cpp/introduction.html)。