首页 > 系统相关 >用 Visual Studio 调试器中查看内存中图像

用 Visual Studio 调试器中查看内存中图像

时间:2024-03-19 18:29:36浏览次数:26  
标签:Image Watch Visual Studio 图像 cv 调试器

返回目录:OpenCV系列文章目录(持续更新中......)

前一篇:OpenCV4.9.0在windows系统下的安装

后一篇:OpenCV-Java 开发简介  

​警告

本教程可以包含过时的信息。

Image Watch 是 Microsoft Visual Studio 的插件,可用于在调试应用程序时可视化内存中的图像(例如 cv::Mat 或 IplImage_ 对象)这有助于跟踪错误,或者简单地了解给定的代码段正在做什么

先决条件

本教程假定您具备以下条件:

  1. 安装了 Update 1 的Visual Studio 2012 Professional(或更高版本)。更新1可在此处下载。
  2. 在Windows计算机上安装OpenCV(教程:在 Windows 中安装
  3. 能够在Visual Studio中创建和构建OpenCV项目(教程:如何在“Microsoft Visual Studio”中使用OpenCV构建应用程序

安装

下载 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”,并在下面插入源代码

​// Test application for the Visual Studio Image Watch Debugger extension
#include <iostream> // std::cout
#include <opencv2/core/core.hpp> // cv::Mat
#include <opencv2/imgcodecs/imgcodecs.hpp> // cv::imread()
#include <opencv2/imgproc/imgproc.hpp> // cv::Canny()
using namespace std;
using namespace cv;
void help()
{
cout
<< "----------------------------------------------------" << endl
<< "This is a test program for the Image Watch Debugger " << endl
<< "plug-in for Visual Studio. The program loads an " << endl
<< "image from a file and runs the Canny edge detector. " << endl
<< "No output is displayed or written to disk."
<< endl
<< "Usage:" << endl
<< "image-watch-demo inputimage" << endl
<< "----------------------------------------------------" << endl
<< endl;
}
int main(int argc, char *argv[])
{
help();
if (argc != 2)
{
cout << "Wrong number of parameters" << endl;
return -1;
}
cout << "Loading input image: " << argv[1] << endl;
Mat input;
input = imread(argv[1], IMREAD_COLOR);
cout << "Detecting edges in input image" << endl;
Mat edges;
Canny(input, edges, 10, 100);
return 0;
}

确保活动解决方案配置(内部版本 –> Configuration Manager)设置为调试版本(通常称为“调试”)。这应该会禁用编译器优化,以便调试器中的查看变量可以可靠地工作

生成解决方案(“生成 >生成解决方案”,或按 F7

在继续之前,不要忘记将输入图像的命令行参数添加到项目中(右键单击项目 –> 属性 –> 配置属性 –>调试,然后使用图像的位置设置字段命令参数)

现在在源行上设置一个断点,上面写着Mat edges;

若要设置断点,请右键单击源行,然后从上下文菜单中选择“断点 –>插入断点”

在调试器中启动程序(Debug –> Start Debugging,或按 F5)。命中断点时,程序将暂停,Visual Studio 会在断点处显示黄色指令指针:

breakpoint.png

现在,您可以检查程序的状态。例如,您可以打开“局部变量”窗口(“调试”>“Windows ”–“>局部变量”),该窗口将显示当前作用域中变量的名称和值:

vs_locals.png

​请注意,内置的“局部变量”窗口将仅显示文本。这就是 Image Watch 插件的用武之地。Image Watch 就像另一个 Locals 窗口,但内置了一个图像查看器。若要调出“图像监视”,请选择“视图”->“其他窗口”->“图像监视”。与 Visual Studio 的“局部变量”窗口一样,Image Watch 可以停靠到 Visual Studio IDE。此外,Visual Studio 还会记住你是否打开了图像监视,以及它在调试会话之间的位置。这意味着您只需执行一次此操作 - 下次开始调试时,Image Watch 将返回到您离开的位置。下面是停靠的 Image Watch 窗口在断点处的样子:

toolwindow.jpg

左上角的单选按钮 (Locals/Watch) 选择下面的图像列表中显示的内容:Locals 列出当前范围内的所有 OpenCV 图像对象(此列表会自动填充)。监视显示已固定以进行连续检查的图像表达式(此处未介绍,有关详细信息,请参阅图像监视文档)。图像列表显示基本信息,例如宽度、高度、通道数以及缩略图(如果可用)。在我们的示例中,图像列表包含我们的两个局部图像变量,即输入边缘

如果图像有缩略图,左键单击该图像将在右侧的图像查看器中选择该图像进行详细查看。查看器允许您平移(拖动鼠标)和缩放(鼠标滚轮)。它还显示当前鼠标位置的像素坐标和值。

viewer.jpg

请注意,列表中的第二张图像“边缘”显示为“无效”。这表示此图像对象的某些数据成员具有损坏或无效的值(例如,负图像宽度)。这在程序的这一点上是预期的,因为边缘的C++构造函数尚未运行,因此其成员具有未定义的值(在调试模式下,它们通常填充“0xCD”字节)。

从这里,您可以单步执行代码(Debug->Step Over,或按 F10)并观察像素变化:如果单步执行一次,则 Mat edges; 语句,边缘图像将从“invalid”变为“empty”,这意味着它现在处于有效状态(默认构造),即使它尚未初始化(使用 cv::例如,Mat::create())。如果在 cv::Canny() 调用上再执行一步,您将看到边缘图像的缩略图出现在图像列表中。

现在假设你想对 cv::Canny() 实现进行可视化健全性检查。通过在“图像列表”中选择边缘图像,将边缘图像带入查看器,并放大到具有明确定义边缘的区域:

edges_zoom.png

右键单击图像查看器以调出视图上下文菜单并启用链接视图(菜单项旁边的复选框指示是否启用该选项)。

viewer_context_menu.png

“链接视图”功能在相同大小的图像之间切换时使视图区域保持固定。要查看其工作原理,请从图像列表中选择输入图像 - 您现在应该在输入图像中看到相应的放大区域:

input_zoom.png

​您还可以使用向上/向下光标键在查看输入和边缘之间来回切换。这样,您就可以轻松验证检测到的边缘是否与输入图像中的数据很好地对齐。

更多 ...

Image Watch 具有许多更高级的功能,例如

  1. 将映像固定到监视列表,以便跨作用域或调试会话之间进行检查
  2. 直接在“监视”窗口内对图像进行钳位、阈值设置或差异
  3. 将内存中映像与文件中的参考映像进行比较

有关详细信息,请参阅在线图像监视文档 - 您也可以通过单击图像监视窗口中的帮助链接访问文档页面:

help_button.jpg

 参考文献: 

《Image Watch: viewing in-memory images in the Visual Studio debugger 》Wolf Kienzle

标签:Image,Watch,Visual,Studio,图像,cv,调试器
From: https://blog.csdn.net/2301_78348935/article/details/136759248

相关文章

  • 鸿蒙学习笔记-DevEco Studio 安装
    鸿蒙DevEco Studio是开发华为鸿蒙系统必须要安装的开发软件软件下载软件下载地址:HUAWEIDevEcoStudio和SDK下载和升级|华为开发者联盟,根据自己使用的电脑情况,选择对应的下载文件 软件安装下载后的文件是zip压缩包,解压后,打开安装文件,点击Next保持默认选项,点击Next......
  • PVS‑Studio 7.29 for macOS, Linux & Windows - 代码质量安全静态分析
    PVS‑Studio7.29formacOS,Linux&Windows-代码质量安全静态分析PVS‑Studio-代码漏洞扫描工具|静态代码测试|代码安全分析请访问原文链接:https://sysin.org/blog/pvs-studio/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgC、C++、C#和Java代码静......
  • 功能齐全的免费 IDE Visual Studio 2022 社区版
    面向学生、开放源代码和单个开发人员的功能齐全的免费IDE下载地址VisualStudio2022社区版-下载最新的免费版本VisualStudio2022CommunityEdition–DownloadLatestFreeVersion准备安装选择需要安装的程序安装进行中使用C++学习程序设计相关知识并培......
  • Visual and CNN 笔记
    visualandCNN边缘检测比如对于6x6的灰度图像:构造3x3的filter(滤波器(卷积核))向右移动步长为1,直到边界,再回到起点,向下移动一步为什么可以做边缘检测:右侧4x4矩阵中间的白色区域就包含了6x6矩阵的垂直边缘可以用神经网络反向传播来训练出比较好的滤波器矩阵参数选择paddin......
  • androidstudio Unable to delete directory E:/xxxxx
    一、概述在使用AndroidStudio运行项目的时候,有时候会出现UnabletodeletedirectoryE:/xxxxx会提示某一个文件无法删除,导致clean和重新运行都会失败。二、解决办法导致这个问题的原因是可能有两个虚拟机同时使用了该文件。第一种情况:1.打开了......
  • 上位机图像处理和嵌入式模块部署(qmacvisual脚本编辑)
    【 声明:版权所有,欢迎转载,请勿用于商业用途。联系信箱:[email protected]】    个人认为qmacvisual软件中,另外一个鲜明的特色,就是它本身支持javascript脚本编写,虽然是利用qtscriptengine完成的。这个脚本编写,让fae或者说现场部署的同学一下子有了配置插件、调整......
  • Visual Studio Code中Python安装库文件遇到的问题
    不知道怎么安装库文件,在网上搜索出来好多都是VS2019版本,与现在的2023版本界面不太一样,但是还是可以通过pip安装,之前换过国内的源(现在已经忘了,果然不记录光靠脑子是不行的),用的是清华的源下载速度还可以。安装xlwt库时成功,但是安装BeautifulSoup库时报错,×Gettingrequirement......
  • 关于Android studio无法勾选SDK的问题
    这是我遇到的问题,相信也是大多数人遇到的问题,我的经历是之前下载过一次Androidstudio,用过一段时间后虚拟机出问题了,一直连不上,我都是用手机代替运行,发现太麻烦了,还是决定重新一遍,于是我重新安装了Androidstudio。发现这个地方是无法勾选的,于是我试了好多方法补充:大家没必要去专......
  • 【Android】使用Android Studio打包APK文件
    文章目录1.新建项目2.打包生成APK3.安装APK 1.新建项目打包APK之前,首先需要新建项目,有基础的可以跳过。无基础的可以参考:使用AndroidStudio运行HelloWorld项目2.打包生成APK1.找到Build->GenerateSignedBundleorAPK->勾选APK  2.首次需要创建......
  • 【Android】使用Android Studio运行Hello World项目
    文章目录1.JDK的安装与配置2.AndroidStudio的安装3.运行HelloWorld项目3.1新建项目3.2修改项目配置3.2.1修改UI界面3.2.2配置AndroidSDK3.3添加并运行虚拟设备3.4运行项目 1.JDK的安装与配置想要使用AndroidStudio,必须先配置Java环境,需要......