OpenCV 4.10.0
开源计算机视觉
|
上一教程: 如何在“Microsoft Visual Studio”中使用 OpenCV 构建应用程序
下一教程: Java 开发介绍
原作者 | Wolf Kienzle |
兼容性 | OpenCV >= 3.0 |
Image Watch 是 Microsoft Visual Studio 的一个插件,它允许你在调试应用程序时可视化内存图片(例如cv::Mat 或 IplImage_ 对象)。这有助于找出错误,或仅仅了解给定的代码执行了什么操作。
本教程假定你具备以下条件:
下载 Image Watch 安装程序。(Visual Studio 2019 | Visual Studio 2017 | Visual Studio 2012、2013、2015)安装程序以扩展名为 .vsix(Visual Studio 扩展)的单个文件形式提供。要启动它,只需在 Windows 资源管理器中双击 .vsix 文件即可。安装程序完成后,请确保重启 Visual Studio 以完成安装。
Image Watch 可与使用 OpenCV 图像对象(例如cv::Mat)的任何现有项目一起使用。在本示例中,我们使用一个从文件中加载图像并运行边缘检测器的最小测试程序。要构建程序,请在 Visual Studio 中创建一个控制台应用程序项目,将其命名为“image-watch-demo”,并插入以下源代码。
确保活动解决方案配置(生成 -> 配置管理器)被设为调试生成(一般称为“调试”)。这可以禁用编译优化,从而使在调试器中查看变量可靠地工作。
生成解决方案(生成 -> 生成解决方案,或按住 F7)。
继续前,不要忘记将你的输入图像的文件路径参数添加到项目中(右键单击项目 -> 属性 -> 配置属性 -> 调试,然后在命令参数字段中设置图像的位置)。
现在在显示如下的源代码行上设置断点
要设置断点,右键单击源代码行,然后从上下文菜单中选择断点 -> 插入断点。
在调试器中启动程序(调试 –> 开始调试或按F5)。当命中断点时,程序暂停,Visual Studio 在断点处显示黄色指令指针
您现在可以检查程序状态。例如,您可以调出局部变量窗口(调试 –> 窗口 –> 局部变量),它将显示当前范围内变量的名称和值
请注意,内置的局部变量窗口将只显示文本。这是 Image Watch 插件派上用场的地方。Image Watch 是另一个局部变量窗口,但内置了图像查看器。要调出 Image Watch,请选择视图 –> 其他窗口 –> Image Watch。像 Visual Studio 的局部变量窗口一样,Image Watch 可以停靠到 Visual Studio IDE。此外,Visual Studio 会记住您是否打开了 Image Watch,以及它在调试会话之间位于何处。这意味着您只需执行此操作一次,下次开始调试时,Image Watch 将回到您离开的位置。以下是停靠的 Image Watch 窗口在我们断点处显示的样子
左上角的单选按钮(局部变量/监视)选择在下面的图像列表中显示的内容:局部变量列出当前范围内所有 OpenCV 图像对象(此列表自动填充)。监视显示已固定以进行连续检查的图像表达式(此处未描述,有关详细信息请参阅Image Watch 文档)。图像列表显示基本信息,如宽度、高度、通道数,如果有缩略图,则显示缩略图。在我们的示例中,图像列表包含两个局部图像变量input 和edges。
如果图像有缩略图,则单击该图像将在右边的图像查看器中选择它进行详细查看。查看器允许您平移(拖动鼠标)和缩放(鼠标滚轮)。它还显示当前鼠标位置的像素坐标和值。
请注意,列表中的第二个图像edges显示为“无效”。这表示此图像对象的某些数据成员的值已损坏或无效(例如,负图像宽度)。此程序中应该会出现这种情况,因为edges 的 C++ 构造函数尚未运行,因此其成员的值尚未定义(在调试模式下,它们通常填充“0xCD”字节)。
您可从此处逐步执行代码(调试->单步执行,或按F10),并观察像素变化:如果您执行一步,即Mat edges; 语句,edges 图像将由“无效”更改为“空”,这意味着它现在处于有效状态(默认构造),即使尚未初始化它(例如使用cv::Mat::create())。如果您再执行一步cv::Canny() 调用,您将看到图像列表中出现边缘图像的缩略图。
现在假设您想对cv::Canny() 执行的可视健全性检查。通过在图像列表中选择边缘图像,并将其导入查看器中,然后放大具有清晰定义的边缘的区域
在图像查看器上单击鼠标右键,调出视图上下文菜单,并启用“链接视图”(菜单项旁边的复选框表示该选项是否已启用)。
在相同大小的图像之间翻转时,链接视图功能将视图区域保持固定。若要了解此功能如何运作,请从图像列表中选择输入图像 - 您现在应在输入图像中看到相应的放大区域
您还可使用您的向上/向下光标键在查看输入和边缘之间来回切换。通过这种方式,您可以轻松验证检测到的边缘与输入图像中的数据对齐良好。
图像监视器具有更多高级功能,例如
有关详细信息,请参阅在线图像监视文档 - 您还可单击图像监视窗口中的帮助链接转到文档页面