"MATLAB风格"的计算机视觉、图像处理可视化和调试工具

3
我正在寻找一些工具,能够简单地可视化和调试C++中的计算机视觉/图像处理程序。
这主要是用于调试和研究。
具体功能包括:
- 显示图片并支持缩放 - 能够注释图片 - 能够将注释链接到数据(点击时显示) - 能够将注释链接到操作
OpenCV 具有一些功能,但它们非常有限 - 特别是鼠标和键盘交互。

4
“Matlab style”是什么意思? - Oliver Charlesworth
最好列出您要寻找等价物的几个MatLab命令。 - Ben Voigt
3个回答

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中。


你有触发调试器执行此操作的示例(或参考资料)吗? - Ophir Yoktan
在ImageJ中,它是一个调试器可视化工具。而TRACE_POINT则可以在没有调试器的情况下使用。Matlab通过命令提示符连接到感兴趣的点。 - Reuven Bass

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。这两个库框架都具有良好的UI功能集,可处理图像(以及在某种程度上的视频),并呈现基本形状。两者都有非常好的文档支持。我的感觉是,即使你是Qt的新手,只需要几天时间就可以开发出具备你所列出的功能的简单应用程序。

如果你想在Python中进行原型设计,Qt也可能是一个有趣的选择。Python、PySide/PyQt、OpenCV、NumPy和SciPy的组合应该会提供一个非常不错的原型设计环境。Enthought还列出了许多其他有用的软件包。此外,由于其中一些库在两种语言中都可用,因此它将简化从原型到优化实现的C++转换。


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