如何在 OpenCV 中显示流图像?

Posted

技术标签:

【中文标题】如何在 OpenCV 中显示流图像?【英文标题】:How to display streaming images in OpenCV? 【发布时间】:2011-10-11 14:20:06 【问题描述】:

我想使用 EDSDK 实现实时取景功能。我使用 EdsGetPointer 来获取内存流的内存地址指针。现在我想在 PC 上显示流媒体图像。

我读到有人使用VisualC上的API,例如ATL或CImage,只需将内存流的指针作为参数传递就可以显示流图像,并且该函数可以自行检索流图像。我正在考虑使用 OpenCV 来显示流图像,因为我的计算机上没有安装 VisualC。我可以使用 OpenCV 上的任何功能来显示流图像吗?或者我可以使用其他替代方法来处理来自 EDSDK 的流式图像吗?

【问题讨论】:

【参考方案1】:

您可以将数据打包到 IplImage 并在循环中使用 cvShowImage 显示:http://opencv.willowgarage.com/documentation/user_interface.html 缺点是您被绑定到 OpenCV 事件循环中。

还有其他选择。过去,我使用 OpenGL 将图像绘制为纹理,以便我可以管理视口、在其上绘制等。使用 GLUT 可以快速获得简单灵活的工作 GUI。这样做的好处是,您编写的任何 OpenGL 代码都可以移植到您使用的任何其他 UI 库,只要该库具有 OpenGL 画布小部件。我总是做的是Camera->IplImage->OpenGL Texture->wxWidgets glCanvas。我仍然使用 OpenCV 进行实际的图像处理等。它完全是跨平台的,不需要 VC++ 的付费版本。

【讨论】:

openCV 中的图像显示功能实际上只是“足够好”以查看图像处理的结果,您不会将它们用于视频播放器之类的东西。跨度> 【参考方案2】:

你想要 LiveView 吗?如果不是实时取景,您可以将流媒体图像保存在主机中 使用

Error = EdsCreateFileStream(dirItemInfo.szFileName, EDSDK.EdsFileCreateDisposition.CreateAlways, EDSDK.EdsAccess.ReadWrite, out stream);

然后你就可以加载它了

IplImage *inImg = cvLoadImage("photo2.jpg");

然后就可以在opencv中处理图片了。

【讨论】:

以上是关于如何在 OpenCV 中显示流图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Python中使用OpenCV以特定顺序显示图像?

如何在opencv中使用光流跟踪来分割图像?

如何使用 opencv 向 PYQT 显示图像

如何将利用OpenCV加载的图像显示在窗口指定位置

c ++ opencv在窗口上显示图像

如何在android手机中接收opencv图像