“MATLAB 风格”计算机视觉\图像处理可视化\调试工具
我正在寻找能够对 C++ 中的计算机视觉\图像处理程序进行简单可视化和调试的工具。
需求主要是为了调试和研究。
具体功能:
- 显示放大\缩小图像的
- 能力 注释图像的
- 能力 将注释链接到数据(单击时将显示)的
- 能力 将注释链接到操作
OpenCV 有一些功能,但它们非常有限 - 特别是鼠标和键盘交互。
I'm looking for tools that will allow simple visualization and debugging of computer vision \ image processing programs in c++.
The need is mainly for debugging and research.
Specific features:
- Showing images with zoom in \out
- ability to annotate images
- ability to link annotations to data (which will shown when clicked)
- ability to link annotations to actions
OpenCV has some capabilities, but they are pretty limited - especially mouse and keyboard interaction.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
简短回答:我认为不存在。
如果您正在调试和研究,只需使用 Matlab。如果速度是一个问题,请使用 Matlab 分析器并将相应的函数混合到 C/C++ 甚至 GPU 代码中。我从事计算机视觉研究已有多年,并以这种方式编写了大量实时应用程序。
OpenCV 很不错,而 VLFeat (同时提供 Matlab 和 C API)也很棒。然而,最终,您将使用带有 REPL(如 Matlab)的解释性语言更快地进行研究。我认真考虑的计算机视觉原型的唯一其他替代方案是 Python 和 Lush。
Short answer: I don't think there is.
If you're debugging and doing research, just use Matlab. If speed is an issue, use the Matlab profiler and mex the corresponding functions into C/C++ or even GPU code. I've been doing computer vision research for quite a few years and have written plenty of real-time applications this way.
OpenCV is decent and VLFeat (w/ both Matlab and C API's available) is great. However, ultimately, you're going to move faster in research with an interpreted language w/ a REPL like Matlab. The only other alternatives I'd seriously consider for computer vision prototyping are Python and Lush.
我同意 pxu 的观点,即可能没有一个图像处理库能够完全满足您的要求。 OpenCV 和 VXL 都有一些基本和/或笨重的 GUI 组件,但不足以满足您的要求。
如果您想坚持使用 C++,那么我建议使用 Qt(在 LGPL 下分发 - 因此对于商业和非商业用途都是免费的)或 Microsoft .NET。这两个库框架都具有良好的 UI 功能集,用于处理图像(以及某种程度上的视频)和基本形状的渲染。两者都有很好的记录。我的感觉是,即使您是 Qt 新手,也只需要几天左右的时间就可以构建一个具有您列出的功能的简单应用程序。
如果您想使用 Python 制作原型,Qt 也可能是一个有趣的选择。 Python、PySide/PyQt、OpenCV、NumPy 和 SciPy 的组合应该提供一个非常不错的原型设计环境。 Enthought 还列出了许多其他可能有用的软件包。此外,由于其中一些库在两种语言中都可用,因此它将简化从原型到 C++ 优化实现的过渡。
I agree with pxu that there probably isn't an image processing library that's going to do exactly what you want. Both OpenCV and VXL have a few basic and/or clunky GUI components, but won't be sufficient for your requirements.
If you want to stick with C++, then I'd recommend either Qt (distributed under LGPL - so free for commercial and non-commercial use) or Microsoft .NET. Both of these library frameworks have a good UI feature set for dealing with images (and video, to some extent), and rendering of basic shapes. Both are very well documented. My feeling is that even if you're new to Qt, it would only take a few days or so to knock up a simple application with the features you listed.
Qt might also be an interesting option if you're looking to prototype in Python. A combination of Python, PySide/PyQt, OpenCV, NumPy and SciPy should give a very decent prototyping environment. Enthought also list numerous other packages which could be useful. Furthermore, as some of these libraries are available in both languages, it'll ease the transition from prototype to optimised implementation in C++.
我经常使用的技术是在 C++ 代码中放入一种跟踪点。
TRACE_POINT
是一个有条件地将数据序列化到外部库的宏。例如,ImageJ 是一个非常强大的工具,有许多可用的插件。我在一个项目中工作,其中一个基于 TCP 的简单 ImageJ 插件连接到 Visual Studio 调试器。当您将鼠标悬停在调试器内的
myImg
变量上时,图像会自动发送到 ImageJ。或者(促销)诸如Cpp2Mtl的Vcall之类的东西,它知道从这样的< code>TRACE_POINT 直接到 Matlab。
The technique I'm using frequently is to put in C++ code a kind of trace points.
TRACE_POINT
is a macro that conditionally serializes data to an external library. For example, ImageJ is a very powerful tool with many plugins available.I worked in a project where a simple TCP based ImageJ plugin was connected to Visual Studio debugger. Images were automatically sent to ImageJ as you mouse over the
myImg
variable inside a debugger.Or (promotion) something like Vcall of Cpp2Mtl that knows to serialize data from such a
TRACE_POINT
directly to Matlab.