2011-06-26 53 views
3

我正在寻找一些工具,可以在C++中对计算机视觉\图像处理程序进行简单的可视化和调试。“MATLAB风格”计算机视觉图像处理可视化调试工具

需要主要是为了调试和研究。

具体功能:

  • 显示变焦图像\出
  • 能力来注释图像
  • 到的注释(这将示出当点击时)链接到数据
  • 链接注释能力的能力采取行动

OpenCV有一些功能,但它们相当有限 - 特别是鼠标和d键盘交互。

+4

你是什么意思的“Matlab风格”? –

+0

您最好列出您正在寻找的等价物的一些MatLab命令。 –

回答

1

简答:我不认为有。

如果您正在调试和研究,只需使用Matlab。如果速度是一个问题,请使用Matlab分析器和mex将相应的函数转换为C/C++甚至GPU代码。我已经从事计算机视觉研究多年,并已经用这种方法编写了大量的实时应用程序。

OpenCV是体面的,VLFeat(无论是Matlab和C API的可用)是伟大的。然而,最终,你会用像Matlab这样的REPL解释型语言进行更快的研究。我唯一认真考虑的计算机视觉原型的其他选择是Python和Lush

1

我同意pxu,可能没有一个图像处理库,会做你想要的。 OpenCV和VXL都有一些基本和/或笨重的GUI组件,但不足以满足您的要求。

如果你想坚持使用C++,那么我会推荐Qt(在LGPL下分发 - 如此免费用于商业和非商业用途)或Microsoft .NET。这两个库框架都具有良好的用户界面功能集,用于处理图像(以及某种程度上的视频)以及渲染基本形状。两者都有很好的记录。我的感觉是,即使你是Qt新手,只用几天时间就可以用你列出的功能来打造一个简单的应用程序。

如果您正在寻找Python原型,Qt也可能是一个有趣的选项。 Python,PySide/PyQt,OpenCV,NumPy和SciPy的组合应该提供一个非常体面的原型环境。 Enthought也列出了许多其他可能有用的软件包。此外,由于这些库中的一些可以使用这两种语言,因此它将减轻C++中从原型到优化实现的过渡。

1

我经常使用的技术是在C++代码中添加一种跟踪点。

int x, y; 
double d; 
MyImage myImg; 

TRACE_POINT(x, y, d, myImg); 

TRACE_POINT是有条件地串行化数据到外部库的宏。例如,ImageJ是一个非常强大的工具,提供了许多插件。 我在一个基于TCP的ImageJ插件连接到Visual Studio调试器的项目中工作。当您将鼠标悬停在调试器内的myImg变量上时,图像会自动发送到ImageJ。

或者(促销)类似的Cpp2Mtl VCALL它知道从这样的TRACE_POINT直接Matlab的序列数据。

+0

您是否有示例(或引用)从调试器触发此类操作? –

+0

在ImageJ的情况下,它是[调试器可视化器](http://www.manicai.net/comp/debugging/visualizer/)。虽然'TRACE_POINT'没有调试器工作。 Matlab通过来自命令提示符的命令“连接”到感兴趣的点。 –