在Visual Studio中调试非托管C++图像

10

我在Visual Studio 2010下使用未管理的C++编写了许多涉及不同图像的图像处理代码。我希望能够像简单的标识符一样轻松地观看它们,即在逐步调试时。

我的当前解决方案是使用一些函数在Matlab控制台中导出图像。这很好,但需要修改源代码,而我只想在调试时做到这一点。因此,最好的选择是悬停鼠标指针时图像弹出,包含变量。不过,在命令窗口中编写一些命令 ExportToMatlab(image)就足够了。然而,我甚至不知道如何做到这一点。

有一个非常相似的问题“在Visual C++中调试图像渲染,有任何有用的插件吗?”,但它太旧了,在那个讨论中我没有找到可接受的答案。一些工具是基于.NET的(参见下面的图像),一些需要编写额外的代码(这就是我目前正在使用的),而一些项目则被冻结或未完成。

DebuggerVisualizer中的截图

我可以花一些时间来实现适当的解决方案,因此欢迎提供有关如何在VS中自定义调试器可视化程序的良好指南链接。

更新

我创建了一个基于Expression Evaluator Add-In的Visual Studio扩展。它可以从其SourceForge项目页面下载,名为NativeViewer。请查看有关如何使用它的描述。


本地调试器不支持类似于托管代码中可用的可视化工具。核心缺失功能是在断点处活动时在另一个线程上运行任意代码。 - Hans Passant
那么通过即时窗口访问内部程序状态呢?我可以运行一些宏来实现这个目的吗? - Mikhail
2个回答

4
我真的不敢相信没有人提到过 Image Watch。它是最棒的插件。在调试时,它会显示所有 Mat 变量(图像(灰度和彩色),矩阵)的视图,在插件中还有有用的功能,如缩放或对比度拉伸,你甚至可以直接在插件中应用更复杂的函数来进行实时处理。它使任何类型的图像操作调试变得轻松,并且如果您使用 cv::Mat 矩阵进行计算和线性代数操作,则非常有帮助。

enter image description here


当这个问题被提出时,还没有Image Watch :) 目前我已经在使用它。但是你的答案可能对其他从搜索引擎来的人有帮助,所以+1。 - Mikhail
是的,这其实是真的。感觉我已经用了好久了 :-) - Ela782

3

仅供参考:我基于表达式计算器插件实现了自己的解决方案。虽然不是非常适合,但我能够实现所需的一切。

更新

我创建了一个公开可用的Visual Studio扩展程序。它可以从其SourceForge项目页面NativeViewer中下载。请查看描述以了解如何使用。


1
你的结果是否公开可见? - 0xC0000022L
@0xC0000022L 提到的解决方案过于具体,且未公开分享。我目前正在开发更方便的扩展程序,用于在VS中显示OpenCV图像(适应其他格式也不难)。该扩展程序可在http://sourceforge.net/projects/nativeviewer/上获取,但目前尚未准备好供使用。 - Mikhail
1
@0xC0000022L 我已经得到了可用的版本。请查看我的问题更新部分。 - Mikhail
1
@0xC0000022L 欢迎提供任何反馈或错误报告。感谢对声誉的提升 :) - Mikhail

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