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));

但它给了我一个错误覆盖。

我希望你能帮帮我,

多谢!

4

2 回答 2

6

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

cv::namedWindow(window_title, 1);
cv::imshow(window_title, file);
于 2011-05-30T13:20:03.280 回答
1

试试这个:

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

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

于 2011-05-30T13:22:46.927 回答