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

5

在我的应用程序中,我有一个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个回答

6

为什么要使用C++数据类型来尝试使用C接口?请使用C++接口。

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

非常感谢!我认为这是对于我的情况来说更好的解决方案。 - Marcus Barnet
甚至,namedWindow并不是必要的。在某些平台上,它甚至会出现问题。 - Barney Szabolcs
@karlphillip 问题可能是许多老师/教材习惯于使用IplImage,并且没有广为人知的好资源来教如何从使用IplImage转换为Mat。 - Barney Szabolcs
1
@BarnabasSzabolcs 或许吧。我很高兴我们有Stackoverflow :) - karlphillip

1

试试这个:

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

顺便说一句,也许使用C++ OpenCV函数来显示图像会更好,这样会更容易,而且您不必担心是否已清除了所有分配的内存(在此处可以查看示例代码:http://opencv.willowgarage.com/documentation/cpp/introduction.html)。


我也尝试了这个解决方案,但我使用etarion的建议,因为它稍微快一点。 - Marcus Barnet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接