OpenCV的Image Watch插件安装与使用

说来惭愧,一直觉得OpenCV在调试方面不如MATLAB灵活方便,没成想OpenCV官方早就推出了一个叫Image Watch的插件可用于调试时显示和监视图像变量了。这里简单记录一下插件的下载安装与基本使用方法,供大家参考。本文示例使用的环境为:Windows10系统+vs2015+OpenCV3.4。

Image Watch是Microsoft Visual Studio的一个插件,它允许我们在调试应用程序时可视化内存中的图像(例如,cv::Mat或IplImage_对象)。 这有助于跟踪错误,或者帮助我们了解特定的代码片段正在做什么(例如本文的示例代码中进行的变换)。

本文的主要内容:

  • Image Watch插件安装需求
  • 插件下载和安装方法
  • 插件的使用方法
  • 示例代码

 

安装该插件需要如下条件

  •      安装了Update 1的Visual Studio 2012 Professional(或更高版本)
  •      在Windows机器上完成了OpenCV的安装
  •      能够在Visual Studio中创建和构建OpenCV项目

下载安装Image Watch

Image Watch下载地址:https://marketplace.visualstudio.com/items?itemName=VisualCPPTeam.ImageWatch

Image Watch安装方式:双击下载的ImageWatch.vsix文件,即可完成安装。

使用Image Watch

Image Watch适用于任何使用OpenCV图像对象的现有项目(例如,cv::Mat)。 下面给出一个简单的示例,加载一幅彩色图像,并将其转换为反色。 所使用的开发环境为Windows10,Visual Studio 2015。首先创建一个控制台应用程序项目,然后在下面插入源代码。别忘了将目标平台改为debug x64。

#include "stdafx.h"
#include "opencv.hpp"

using namespace cv;
int main()
{
	cv::Mat src, dst;
	src = cv::imread("E:/images/Lena.jpg");
	dst = src.clone();// 浅拷贝,共享数据区域,修改src2同时改变src1
	// 遍历像素
	for (int col = 0; col < width; col++)
	{
		for (int row = 0; row < height; row++)
		{
			Vec3b bgr = src.at<Vec3b>(row, col);
			bgr[0] = 255 - bgr[0];
			bgr[1] = 255 - bgr[1];
			bgr[2] = 255 - bgr[2];
			dst.at<Vec3b>(row, col) = bgr;
		}
	}

	imshow("src",src);
	imshow("-src", dst);
	cv::waitKey();
    return 0;

}

确保使用的是debug模式,并且在适当的位置设置的断点,在本例中在第二个for循环的位置以及第一个imshow的位置分别设置断点。调试运行至断点时即可激活image watch插件。如果没有显示Image Watch窗口,可以使用如下方法调用:菜单栏->视图->其他窗口->image watch,调出该插件。

请注意,vs IDE内置的“本地”窗口将仅显示文本。 而Image Watch插件就像是另一个Locals窗口,但内置了一个图像查看器。与Visual Studio的Locals窗口一样,Image Watch可以停靠到Visual Studio IDE。 此外,Visual Studio将记住我们是否打开了Image Watch,以及它在调试会话之间的位置。 也就是说只需执行此操作,下次开始调试时,Image Watch将返回之前我们离开的位置。 上图就是停靠的Image Watch窗口在断点处的样子。

Image Watch窗口左上角的单选按钮(Locals / Watch)选择下面的图像列表中显示的内容:Locals列出当前作用域中的所有OpenCV图像对象(此列表自动填充)。 Watch显示已固定用于连续检查的图像表达式。 图像列表显示基本信息,例如宽度,高度,通道数,以及缩略图(如果有)。 在我们的示例中,图像列表包含两个本地图像变量,输入和边。

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

在图像上使用滚轮操作实现缩放,放大到一定尺寸后将同时显示像素的BGR分量,如上图所示。

附加功能的使用

图像监视插件在list栏某图像上单击右键弹出菜单,如下图所示。菜单项是:

右键菜单各项功能说明:

  • Expand All/Collapse All: 展开/全部折叠,展开/折叠当前列表中的所有项目
  • Expand New Items: 展开新项目,控制是否最初展开或折叠新列表项目
  • Large Thumbnails: 大缩略图,在两个缩略图大小之间切换
  • Auto Maximize Contrast: 自动最大化对比度,如果未选中,则使用标准颜色映射规则将像素值映射到显示颜色。如果选中,则当前像素数据的值范围将映射到整个显示颜色范围(如Matlab的imagesc)。注意:此设置适用于所有图像。
  • 1-Channel Pseudo Color: 1通道伪彩色,如果未选中,则单通道图像显示为灰度。如果选中,则使用伪彩色图(如Matlab的colormap jet)。注意:此设置适用于所有图像。
  • 4-Channel Ignore Alpha: 4通道忽略Alpha,如果未选中,则四通道图像中的最后一个通道被解释为alpha。如果选中,则忽略最后一个通道。
  • Add to Watch: 添加到监视,将所选项目添加到监视列表
  • Add Address to Watch: 添加要监视的地址,将所选项的地址添加到监视列表。这对于在不同堆栈帧上观看图像很有用。
  • Dump to File: 转储到文件,将所选图像转储到文件。支持的格式为PNG,JPG和BIN(Image Watch内部无损文件格式)。BIN文件仅适用于Image Watch;可以使用@file运算符将它们加载到监视列表中。

添加监视后可以逐步查看监视对象的变化。

在图像浏览区(插件右侧)点击鼠标右键,也有一个菜单。可以方便的将图像缩放成原始大小或者适配显示区域。另一个比较有用的功能是Link View

当选择了Link View后,切换到src图像时,自动显示的是刚才dst放大的区域,如下图所示 

更多帮助可以直接点击插件窗口中的help按钮打开帮助文档。

参考文档:https://opencv.org/image-watch-plugin-for-visual-studio.html

本文更新链接:https://mp.csdn.net/postedit/83413877

转载请注明出处。


新书终于面市啦,《机器学习原理与编程实战》连接原理与实战:

https://blog.csdn.net/iracer/article/details/116051674?spm=1001.2014.3001.5501

© 版权声明
THE END
喜欢就支持一下吧
点赞72 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容