"MATLAB style"计算机视觉\图像处理可视化\调试工具

"MATLAB style" computer vision image processing visualization debugging tools

本文关键字:可视化 调试工具 图像处理 计算机视觉 MATLAB style      更新时间:2023-10-16

我正在寻找能够在c++中对计算机视觉\图像处理程序进行简单可视化和调试的工具。

需要的主要是调试和研究。

具体功能:

  • 显示放大/缩小的图像
  • 对图像进行注释的能力
  • 将注释链接到数据的能力(单击时将显示)
  • 将注释链接到操作的能力

OpenCV有一些功能,但它们非常有限,尤其是鼠标和键盘的交互。

简短回答:我认为没有。

如果您正在调试和进行研究,只需使用Matlab即可。如果速度是个问题,请使用Matlab探查器并将相应的函数混合到C/C++甚至GPU代码中。我做计算机视觉研究已经有好几年了,用这种方式写了很多实时应用程序。

OpenCV不错,VLFeat(同时提供了Matlab和C API)也很棒。然而,最终,使用像Matlab这样的REPL解释语言,你会更快地进行研究。对于计算机视觉原型,我唯一认真考虑的其他替代方案是Python和Lush。

我同意pxu的观点,即可能没有一个图像处理库可以完全满足您的需求。OpenCV和VXL都有一些基本的和/或笨重的GUI组件,但不足以满足您的需求。

如果你想坚持使用C++,那么我建议你选择Qt(在LGPL下发布,因此商业和非商业用途都是免费的)或Microsoft.NET。这两个库框架都有一个很好的UI功能集,用于处理图像(在某种程度上还有视频)和基本形状的渲染。两者都有很好的记录。我的感觉是,即使你是Qt的新手,也只需要几天左右的时间就可以用你列出的功能构建一个简单的应用程序。

如果您希望在Python中创建原型,Qt可能也是一个有趣的选项。Python、PySide/PyQt、OpenCV、NumPy和SciPy的组合应该会提供一个非常不错的原型环境。Enthought还列出了许多其他可能有用的软件包。此外,由于其中一些库在这两种语言中都可用,这将简化从原型到C++优化实现的过渡。

我经常使用的技术是在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。