如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢。

  Image Watch(下载)是OpenCV的一款最新工具,它能够即时显示出矩阵的内容,即memory中Mat的信息,方便程序的调试,非常好用。不过目前该插件只支持VS2012,而且不能保存调试信息。

  下载地址:点击打开链接

  安装方法:

  1 从以上网址下载插件,下载后得到一个ImageWatch.vsix。

  2.打开VS2012安装目录,VS2012/COMMOM7/IDE/Microsoft VSIX Installer.EXE

  3将文件复制一份,改名为vsixinstaller,放到上面那个目录下。

  4双击最开始下载得到的ImageWatch.vsix

  下面是opencv官方对image watch列出的帮助文档,花了好久才翻译完,供大家参考。

  以下译文均来自Image watch 插件的官方帮助文档点击打开链接

  需要Visual Studio 2012平台,为了确保混合调试模式的顺利进行,需要取消 Tools -> Options -> Debugging -> General -> Managed C++Compatibility Mode

  基本操作:

  第一次启动image watch插件:进入调试状态,选择View->OtherWindow->Image Watch.注意,执行一次此操作,在以后的调试过程中,Image Watch窗口会在调试时自动弹出,并在结束调试之后关闭。

  Image Watch包含Locals和Watch window两个窗口,在右上角有单选按钮可以进行切换,与vs中的Locals 和Watch window的窗口相似。在Locals模式中,窗口将自动以图片的形式列出当前堆栈中的所有图片类型的变量;在Watch模式中,窗口将显示用户指定的图片类型变量。

  列表中的每个图片给变量都以一个正方形的缩略图标进行标示。当小图标为蓝色时,将在右侧窗口显示该图片变量的详细附加信息,包括图像的缩略图、图片的尺寸(以像素为单位的宽和高)、像素格式(通道数以及像素的数据类型),具体支持的C++类型以及像素数据格式将在下文提到。

  在右侧的图片浏览器中可以一次选定一张图片进行浏览,这个浏览窗口所支持的鼠标操作包括左键拖动以及滚轮滑动。当前图片的扩大倍数显示在又上角(F),当前像素坐标显示在鼠标指针处(G),当前像素值在窗口顶部显示,另外,通过旋转鼠标滚轮来放大图像,当放大倍数较高时,像素值将直接显示在原图上。

  ImageWatch可以自动的加载当前调试过程中的图片变量,我们也可以通过在代码编辑窗口(J)或者监视器窗口(I)中右键点击变量选择将其添加到Image Watch窗口中进行浏览。

  图像列表

  图像列表(Figure1 B)的设计与VisualStudio中列表的框的设计相似,包含有Local和Watch两个模式。在Local模式中,这个列表中的元素是只读的,并且是自动显示的。在Watch模式中,可以通过双击文本词条,按F2键后直接输入变量名等方式来添加新的变量,词条可以剪切(Ctrl+X、Ctrl+Delete)、复制(Ctrl+C、Ctrl+Insert)和粘贴(Ctrl+V,Shift+Insert)等等。

  可以通过Up和Down方向键、Tap/Ctrl+Tap以及Home/End键来操作图像列表

  通过单击图像列表中每个词条左上角的“+/-”可以把相应的缩略图折叠或展开,条目折叠起来之后,将只显示条目的名称,这样做的好处是可以减少调试过程中image watch窗口的更新时间,因为窗口中显示的所有信息,包括各个缩略图标,都需要在执行完每个断点或者单步操作后重新加载。当图像列表中有相当多的项目,图片非常大或者调试过程是在远程计算机上执行的时候,每次插件更新时间久变得很明显,这种折叠图标的做法就显得非常有效。

如图2所示在image list窗口中有一个文本菜单(单击)鼠标右键激活。这个菜单里包含的项目有:

  · Expand/Collapse All:展开或折叠当前列表中的所有条目

  · Expand New Items:控制窗口条目默认显示状态是折叠还是展开

  · Large Thumbnails:控制两种缩略图显示尺寸之间的切换

  · Auto Maximize Contrast:如果没有选中,像素值在映射成颜色时将使用标准调色板规则;如果选中,当前像素值将会被映射成全彩色,注意,这一设置是适用于所有图像

  • 1-Channel Pseudo Color:如果没有选中,单通道图像将会显示成灰度图像;如果选中之后,将会使用一个伪彩色调色板对图像进行着色,这一设置也是适用于所有图像的。

  • 4-Channel Ignore Alpha:这一选项重要是针对四通道图像。如果选中,则四通道图像的最后一个通道将解释为alpha;如果未被选中,则随后一个通道的将会被忽略。

  • Add to Watch:将选中的条目加入到watch窗口列表中。

  • Add Address to Watch:将选中图像条目的地址加入到watch窗口列表中,当一个图像的存储跨越了不同的堆栈结构时,这一做法是非常有效的。

  · Dump to File:把当前选中的图片存成一个文件,所支持的保存格式有PGN、JPG以及BIN格式(image watch的内部无损文件格式),BIN文件意味着只能用于image watch,可以使用@file operator来加载这些文件。

  图像浏览窗口

  图像浏览窗口(Figure1, E)对当前选中的条目进行更大尺寸的显示。在这个窗口中我们可以通过鼠标滚轮将图像迅速放大以便查看图像中单个像素的值(Figure 1, H)。

  在图像浏览窗口中按住ctrl键同时按鼠标左键,能够快速实现在前后浏览的两个图片间进行切换。

  窗口中像素的显示格式如下:x y | c0 c1 … cN.其中通道值是按照其在内存中出现的顺序来进行显示的。

单击右键将会弹出该窗口中的快捷菜单(Figure 3):

  · Zoom to Fit:自动设置适合当前窗口显示的缩放比例

  · Zoom to Original Size:将缩放比例设置为1.0,即图片中的一个像素对应着显示屏上的一个像素点。

  · Link Views:如果被选中,所有的具有相同尺寸的图像在显示时都会在想对应的位置同比例显示。比如说,在放大观察了一幅1024*768的图像的某一区域后,在图像列表中选择了另外一张具有相同尺寸的图像,则浏览器将会显示第二章图像相同位置区域的放大效果;相反,如果选择了一张640*480的图片,将会看到一个不同的区域,也就是这张图片是按照所有640*480的图片规格进行显示的。

  · Auto Maximize Contrast/1-Channel PseudoColor/4-Channel Use Alpha:这是图像列表中快捷菜单相应部分的镜像菜单,功能与之前的快捷菜单功能相同,在这里进行的这些选项的设置也是使用与所有图像的。

  · Hexadecimal Display:这个选项将会触发visual studio中的“HexadecimalDisplay”设置,这个设置在初始化构建image watch窗口的过程中生效。在image watch中这个选项将决定像素值将以什么样的进制显示。

  · Copy Pixel Address:将当前像素值在内存中的地址信息复制到剪贴板上,这一点对于做记录非常有帮助。可以讲得到的地址粘贴到VS中内存调试器中,或者用来生成一个数据断点。

  图像格式

  image watch支持下列C/C++图形格式

  OpenCV:

·          cv::Mat_<>

·          cv::Mat

·          CvMat

·          _IplImage

  用户自己定义的图像格式可以通过下面介绍的extensibility interface来进行添加。

  像素格式

  image watch中的像素格式主要包括通道类型和每个通道的格式

  image watch主要支持以下数据类型

·        INT8, UINT8

·        INT16, UINT16

·        INT32

·        FLOAT16

·        FLOAT32

·        FLOAT64

  通道格式表示通道数,最大为512通道。

  需要指出的是,字符串的排列形式与像素的格式相关,每个通道是按照以下语义顺序进行排序的:

·         RG, UV

·         RGB, BGR, YUV

·         RGBA, BGRA

  如果没有明确指出通道语义的排列顺序(例如所有的opencv类型),image watch将使用缺省的调色板规则对图像进行分类。

  同时image watch也至此一定数量的YUV格式。在这种情况下,通道语义的排列顺序将决定数据的排列方式,

·         NV12 (两个方案:一个是Y平面,一个是打包后的UV平面,即在两个维度上进行二次抽样)

·         YV12 (三个方案,一个是Y平面,一个是打包后的U平面和V平面,在两个维度上进行二次抽样)

·         IYUV (与YV12方法相同但是U和V的平面顺序调换)

·         YUY2 (单个方案,对两个通道进行各行扫描,Y是第一个通道,对U和V通道进行水平方向的二次抽样并以此存储在第二个通道中

  更多关于YUV格式的信息请参照http://www.fourcc.org/yuv.php

  颜色映射模式

  image watch中使用下面两种规则对颜色进行映射:

  首先取决于相应的颜色空间。如果相应的语义顺序缺省,则根据通道数来确定对应的颜色空间:

·       1 channel image:根据当前浏览器窗口中的设置来决定使用灰度图或者伪彩色图

·       2 channel image:红或者绿色

·       3 channel image: 蓝色绿色红色三原色

·       4 channel image: 蓝色绿色红色以及Alpha,或者忽略Alpha通道,与当前设置相关

·       5 or more channels: 先使用 B, G, R, 方案同时忽略其他通道

  图像操作符

  image watch中提供了很多简单操作符来更加形象的查看图像数据。为了与固有的C++语句相区分,这些操作符的名字都以“@”开头。

  所有的操作符都是用来对图像进行评估。例如,@band操作符就是用来从图像中提取出一个单通道图像。它有两个参数,一个是图像名称,另一个是需要提取的通道的数字表示。

  操作符之间可以进行嵌套。作为操作符输入的图像可以是任何形式的,即可以用其他一个操作符的输出作为另外操作符的输入。例如@thresh操作符可以对一幅图像进行二值化操作并返回一个二值图像,Figure 4 (L)显示了如何用120作为阈值去二值化一个图像中的Green通道中的值。

  注意:在没有其他说明的情况下,imagewatch操作符的运行算法是的Float32位的,同时返回Float32的图像结果,这样就意味着INT32图像在经过运算后会丢失一些精度,FLOAT64图像在运算后不经会丢失精度,而且误差也会增大。

  注意:在缺省情况下,FLOAT32将按照以下规则对图像的颜色进行映射:将0%强度的像素值映成0.0f,将100%强度的像素值映成1,0f,超出的部分将会被直接省略。例如如果@clamp 把一个UINT8 的图像限制到10和20之间,则结果图像将会被全部显示成白色,因为所有的像素值都处在10到20之间,将其直接映成1.0f。因此我们在使用image watch操作符时,需要确保选择了automatic contrast maximization。无独有偶,下面将要介绍的@norm8 和@norm16操作符来对结果进行除255和除65535的处理,也是一种数据类型的转化。

  image watch操作符列表:

·        @band(img, number): 根据number所指定的通道数提取图像中对应的数值,注意这个操作符要求指定需要提取的对应通道标示。

·        @thresh(img, threshold): 对图像进行二值化处理,大于阈值时将像素赋值为1,小于阈值时将像素赋值为0。

·        @clamp(img, min, max):用给定的最小值和最大值对图像的像素值进行截断。

·        @abs(img): 计算图像中像素的绝对值

·        @scale(img, factor): 将图像中的所有像素的像素值乘以比例系数factor

·        @norm8(img): 将图像的像素值乘以1/255

·        @norm16(img): 将图像的像素值乘以1/65535

·        @fliph(img), @flipv(img), @flipd(img):将图像沿水平、垂直以及对角线方向进行对称翻转

·        @rot90(img), @rot180(img), @rot270(img): 将图像沿顺时针方向旋转90度、180度和270度

·        @diff(img0, img1): 逐点执行以下操作 img0 –img1

·        @file(path): 从指定路径中加载图片.Example: @file(“d:\temp\debug.png”)

·        @mem(address, type, channels, width, height, stride):根据给出的起始地址、通道类型、通道数、宽度、高度以及幅度来声明一段内存,例如Example: @mem(myimg.data,   UINT8, 1, 320, 240, 320)

  Figure1 点击打开链接

  Figure4 点击打开链接

如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢。

opencv中image watch插件安装使用教程相关推荐

  1. opencv中image watch插件安装与使用教程

    Image Watch是OpenCV的一款最新工具,它能够即时显示出矩阵的内容,即memory中Mat的信息,方便程序的调试,非常好用,目前它可以支持vs2012.vs2013及vs2015. 下载最 ...

  2. wordpress安装jquery插件失败_Contact Form 7插件_WordPress表单插件安装使用教程

    Contact Form 7插件用在 wordpress联系表单中,获取访客留言及询盘内容,在表单插件中是很流行的,很多外贸网站和企业网站都会使用 Contact Form 7插件来与访客沟通信息. ...

  3. MAC中文版 FCPX V10.6.5 专属视频剪辑后期工具及其插件安装使用教程

    Final Cut Pro X简介 Final Cut Pro X又名FCPX,是MAC上非常不错的视频非线性剪辑软件,它剪辑速度超凡,具有先进的调色功能.HDR 视频支持,以及 ProRes RAW ...

  4. OpenCV中Viz模块的安装(VS2015)

    背景 因工作需要使用openCV中的Viz模块,而默认的OpenCV包是不含viz模块的.故需特别安装,现将安装过程简要记录如下,以作备忘. OpenCV 2.4.13 VTK 7.1.1 CMake ...

  5. 哔哩哔哩助手edge或chrome插件安装使用教程

    bilibili弹幕视频网现为国内最大的年轻人潮流文化娱乐社区.今天小编为大家带来的是一款可以帮助用户解决观看B站视频的多功能谷歌(Chrome)内核浏览器插件--哔哩哔哩助手(bilibili he ...

  6. 掘金浏览器插件安装图文教程

    本文介绍如何安装掘金chrome插件: Chrome插件推荐 2018-02-27 21:53 chrome插件网近日推荐一款设计师开发人员人手必备的一款插件:掘金插件.有网友留言给笔者说希望整理出一 ...

  7. chrome插件安装方法教程

    文章目录 Chrome插件安装是出现"CRX-INVALID-HEAD"解决方法 今天在介绍flash插件的时候还是按照以前的chrome插件离线安装方法安装插件,却遇到了&quo ...

  8. 织梦如何添html5播放器,织梦ckplayer视频播放器插件安装使用教程

    帝国CMS技术互助群:540946827 一帮大神带你装逼带你飞!还有漂亮的妹纸陪你玩哦! 织梦ckplayer视频播放器插件安装步骤: 第一步.下载安装插件.下载地址:点击此处 将下载下来的压缩包中 ...

  9. 浏览器插件安装+使用教程,超级简单

    前话:文章分为两部分,第一部分介绍Speedceo插件功能,第二部分获取插件安装包,第三部分分享插件安装的两种方法. 在分享插件安装方法之前,大家就记住一个点,打开开发者模式 好的下面正式开始分享内容 ...

最新文章

  1. 【技术人员访谈数学王子】塞德里克·维拉尼的多面人生
  2. 全球数字孪生市场大预测:2025 年的 358 亿美元,年复合增长率(CAGR)高达 37.8%...
  3. c语言tracert程序一直超时,traceroute – tracert命令返回超时
  4. Python中json模块的使用,以及json.loads()和json.dumps()的区别
  5. c++语言中如果调用函数时,需要改变实参或者返回多个值,应该采取,2013年计算机二级C++模拟试题十一及答案...
  6. python中列表实现去重使用_Python实现嵌套列表去重方法示例
  7. python数组初始化_Python Numpy 数组的初始化和基本操作
  8. php+mysql执行sql文件路径_PHP———MySQL笔记(5)之MySQL数据库导出导入sql文件(详细)...
  9. c/c++ 时间函数总结 linux
  10. php创建文件目录,及删除目录和文件
  11. 通过js打开浏览器独立的页面
  12. 解决 Could not find common.jar (android.arch.core:common:1.0.0). 错误
  13. TEE技术与Meltdown Spectre
  14. Follow me 总结
  15. 线控数解法表python编程实现
  16. Android 仿QQ好友分组列表、ExpandableListView的使用详解
  17. 前端ps动态小图标制作方法
  18. JAVA API个各种方法
  19. 谈谈读书如何提升自己
  20. n1_N1考试非常难考过吗?

热门文章

  1. 如何快速识别提取图片上的文字
  2. python爬虫实战之逆向分析酷狗音乐
  3. 三台虚拟机实现NAT地址翻转
  4. UML画图工具-Graphviz和PlantUML
  5. python django小型超市管理系统
  6. SHARC音频DSP的算法详解(七)Reverb Delay混响和回声效果的实现及代码详解
  7. QT实现五子棋小游戏
  8. 省、市、区、街道行政区数据以及行政区数据合并问题
  9. 如何参与一个GitHub开源项目?
  10. SAP 银企直连 付款报文签名与长度限制处理