Image Watch在OpenCV项目中的应用

1.下载地址

Image Watch 下载地址

2. 原文地址

Image Watch: viewing in-memory images in the Visual Studio debugger

3.翻译及学习实践

Image Watch:在vs 调试内存中观察图像

Image Watch 是visual studio的一个插件,通过该插件可以在调试阶段在内存中可视化的观察图像。这对寻找bug十分有效,或者理解代码在执行哪些部分。

使用前提

1. visual stuidio 2012及以上版本
2. opencv已经在你的电脑上配置好,opencv下载安装教程
3. 可以在visual studio中配置开发opencv项目,配置教程

安装

下载Image Watch安装包,以.vsix结尾,双击安装,之后重启visual stuiio 即可。

使用案例

Image Watch在OpenCV项目中调用。在这个例子中,我们载入一张图片如下所示,运行边缘检测程序。新建一个项目文件“image-watch-demo”,插入以下代码:

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;

int main() {
	Mat image;
	// read the input image as a gray-scale image
	image = cv::imread("bd1.jpg", 1);
	if (image.empty()) {  // error handling
		// no image has been created...
		// possibly display an error message
		// and quit the application 
		cout << "Error reading image..." << std::endl;
		return 0;
	}
	cout << "This image is " << image.rows << " x "
		<< image.cols << std::endl;
	cout << "This image has "
		<< image.channels() << " channel(s)" << std::endl;
	// create image window named "My Image"
	namedWindow("Original Image"); // define the window (optional)
	imshow("Original Image", image); // show the image
	waitKey(0); // 0 to indefinitely wait for a key pressed
	// specifying a positive value will wait for
	Mat edgeimage;
	Canny(image, edgeimage, 10, 100);
	namedWindow("Edged Image");
	imshow("Edged Image", edgeimage);
	waitKey(0);

	return 0;
}
确保在Debug模式下调试,这样禁止编译器优化,调试更加可靠。
Build项目,运行结果如下:

关闭运行结果,现在在下面代码打上断点,
Mat edgeimage;
启动调试,或按F5.当运行到断点处,程序停止,有个黄色的箭头指示:
现在你可以查看项目的状态。例如,你可以查看局部变量(Debug--Windows--Locals)

注意到局部变量只呈现文字信息,这时Image Watch就派上用场了,Image Watch就像另一个局部变量窗口,但是是用图像的方式呈现。选择View--OtherWindows--Image Watch打开Image Watch或者点击上图中右侧的放大镜也可以打开Image Watch,像其他窗口一样,Image Watch 也可以嵌入到IDE的窗口中,并且visual studio会记住你的操作,只用打开一次,下次debug会自动打开Image Watch 窗口。
上部的单选按钮选择显示那种图片列表:Locals 列出项目范围中所有的图片(自动实现的),Watch 显示加入观察的图像,在Local列表里图像上点击右键,Add to Watch.
图像列表显示基本的信息例如宽度高度,通道,甚至缩略图。点击图片,在右侧会显示其详细信息。你可以鼠标拖动或者缩放图像。在上册显示鼠标的位置及该位置的像素值,

鼠标滚轮放大,不断放大,你会发现新世界,所有像素上的值都会显示出来,如下图。


目前为止,边缘检测的图像是无效的,这表明程序有错误或者没有运行,例如错误的宽度等,在调试中图像无效对调试寻找问题很有用处。从此处可以运行单步调试,Debug--StepOver或按F10,观察像素的变化,你会发现每运行一步,图像会有所变化,从无效变成有图像显示。

现在假设你想检查边缘检测的效果,选中边缘效果图,并进行放大,然后在图像上右键选择 Link Views,此时两幅图像关联起来,在任意图像上选择任意位置视图,在另一张图中同样位置的变化就会显示。你可以在两张图中切换,找到对应位置的变化。

4 扩展阅读


发布了47 篇原创文章 · 获赞 107 · 访问量 29万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览