opencv调试利器ImageWatch的安装使用
Opencv自带文档和教程应该好好利用。以前不知道怎么用,随着学习的深入,以前不知如何下手的东西现在都慢慢地清晰了起来。今天按照opencv的自带教程尝试了IamgeWatch插件的用法,非常好用,非常强大。下面的内容主要是参考下面的文档:
Image Watch: viewing in-memory images in the Visual Studio debugger
看原文估计会更好,这里只是简单的做个记录。
首先到这里下载IamgeWatch插件:IamgeWatch。这是一个 .vsix文件 (Visual Studio Extension)。然后双击安装,重启VS。
然后建立一个控制台项目,复制下面的代码:
// 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;
}
Build或者F7。
然后再Mat edges处设置断点,如下图:
选择View ‣ Other Windows ‣ Image Watch打开IamgeWatch,运行程序,结果如下所示:
可以看到IamgeWatch左边是input和edges的缩略图和基本信息,包括宽、高、通道数等。而edges此时的状态是invalid,因为它的构造函数还没开始运行。
当鼠标在大图上移动的时候还能看到鼠标所在的图像位置的坐标和像素值。如果放大图像看的时候会有惊喜,我先放大这只猫的眼睛,是这样的:
继续放大。。。
看到了每一点的三通道像素值!图像在我们眼前变得更加清晰,对于理解图像的结构和编程的帮助无疑是巨大的。
然后我们继续探索,F10单步执行。按一下F10会发现edges的状态由invalid变成了empty。
这是因为Mat edges已经被执行,edges被创建但是还没有初始化。所以为空。再次F10:
可以看到edges终于有了内容,是对蓝眼睛喵星人的边缘提取。还是放大眼睛,我们看到了。。。。二维码。。。
继续放大:
原来边缘提取之后得到的是个二值图像啊!
如果在图像上右键把Link Views勾选,那么两张图就可以同步放大缩小,放大其一再去看另一张图,发现另一张图也放大到了同一位置。
更多的用法还得自己在实践中慢慢探索。
opencv调试利器ImageWatch的安装使用相关推荐
- OpenCV调试利器——Image Watch插件的安装和使用
各大编译工具在调试的时候都可以实时查看变量的值,了解变量值的变动情况,在图像处理相关的程序调试中,是否也可以实时查看内存中图像变量的图形信息以及图像上指定区域或点位的数值变化情况呢? 在工业机器视觉领 ...
- php软件安装及调试_PHP调试利器XDebug的安装与使用
很多PHP程序员调试使用echo.print_r().var_dump().printf()等,虽然对于有较丰富开发经验的程序员来说这些也已经足够了,他们往往可以在程序执行的过程中,通过输出特定变量的 ...
- fire.php,php代码调试利器firephp安装与使用方法分析
本文实例分析了php代码调试利器firephp安装与使用方法.分享给大家供大家参考,具体如下: firephp简述 如果你曾经写过js代码的话,那么你对如下的代码肯定不会陌生: console.log ...
- php 控制台打印_php调试利器:FirePHP的安装与使用
php中文网最新课程 每日17点准时技术干货分享 做开发的人都知道,我们可以利用浏览器的控制台来调试JavaScript脚本,但是对于像php这种服务端的脚本,你知道如何调试吗?今天给大家推荐一个ph ...
- Laravel 调试利器 —— Laravel Debugbar 扩展包安装及使用教程(转)
Laravel 调试利器 -- Laravel Debugbar 扩展包安装及使用教程 时间 2015-12-24 09:57:09 Laravel学院 原文 http://laravelacad ...
- go 切换当前运行目录_go调试利器-delve
大家好,我是小栈君,好久没更新文章了,确实抱歉!因为工作变动等原因导致最近拖更严重,但是请大家放心,我会一如既往的为大家带来自己的原创文章,供大家相互交流和学习,一起成长.今天小栈君带来的分享是go语 ...
- 关于 WEB/HTTP 调试利器 Fiddler 的一些技巧分享
随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 转自:https://my.oschina.net/leejun2005/blog/151103 1.原理简介 ...
- 【远程文件浏览器】Unity+Lua开发调试利器
Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https ...
- Go调试利器-delve
大家好,我是小栈君,好久没更新文章了,确实抱歉!因为工作变动等原因导致最近拖更严重,但是请大家放心,我会一如既往的为大家带来自己的原创文章,供大家相互交流和学习,一起成长.今天小栈君带来的分享是go语 ...
最新文章
- 使用Hugo搭建自己的个人博客网站
- 蓄电池容量和环境温度的关系
- sqlserver 2008 R2 删除重复数据
- java的基础类库称为_JAVA基本类库介绍
- 有趣分享:国内产业图谱
- vim 复制一行并且粘贴_Vim常用命令2之文本操作
- I9 9900K线程_收藏党抓紧了!英特尔停产i9-9900K特色包装,只因运输太浪费
- 跨域异常与nginx的underscores_in_headers on
- /etc/udev/rules.d/10-usbstorage.rules
- ruby DBI安装使用指南
- 简单实用的防止多次提交辅助类
- 怎样才能提升代码质量?
- 苹果+beta+软件测试计划,自讨苦吃:加入苹果Apple Beta版软件计划之后
- 将指定 Word 的页眉页脚复制到其他文件中
- html网页设计作品文字,40个以大文字排版的网页设计作品
- 《都在用的商务精英礼仪》读书笔记
- 反向传播思想及其优缺点
- 理解蓝绿发布、灰度发布和滚动发布
- BIOS设置中功能的翻译及介绍
- HDU6357 Hills And Valleys
热门文章
- 多伦多大学好吗_多伦多大学好毕业吗
- oracle varchar2转date_5分钟学会精算师常用Oracle语句
- Opencv 图像入门一之基本操作
- ​易生信-宏基因组2020 积微学术论坛:基于大数据整合准确预测土壤的枯萎病发生...
- 代码分析 | 单细胞转录组clustering详解
- 基因共表达聚类分析及可视化
- java win10 通知_如何在Java中创建Windows通知
- 少年时对春有感-四季初
- Python笔记-windows平台中Flask打包成exe
- C++设计模式-抽象工厂模式