VS2017安装ImageWatch、QT插件----Opencv矩阵Mat类可视化调试(C++调试入门)

相比于Matlab,VS2017在调试C++代码的时候没那么方便,尤其是针对矩阵进行查看的时候,得一步步打印,而ImageWatch is a watch window for viewing in-memory bitmaps when debugging native C++ code.可以很好的帮助我们查看矩阵不同位置的具体数值,提高调试效率。QT也是很好的调试工具,任选一个即可。

目录

    • 一、ImageWatch的安装
    • 二、QT环境搭建
        • 2.1 QT安装
        • 2.2 插件安装
    • 三、opencv常见的矩阵Mat类运算(实时更新)
        • 1.reshape函数
        • 2.矩阵转置
        • 3.数据格式
        • 4.矩阵最大、小值--minMaxLoc函数

一、ImageWatch的安装

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

VS2017安装ImageWatch、QT插件----Opencv矩阵Mat类可视化调试(C++调试入门)_第1张图片
直接安装即可,记得将VS2017关闭后在进行Image Watch的安装。安装后在代码中设置断点,运行程序,之后在“视图”–“其他窗口”–“Image Watch”,便可以显示当前内存的所有二维矩阵,如下,
VS2017安装ImageWatch、QT插件----Opencv矩阵Mat类可视化调试(C++调试入门)_第2张图片
放大后可以查看具体数值
VS2017安装ImageWatch、QT插件----Opencv矩阵Mat类可视化调试(C++调试入门)_第3张图片

二、QT环境搭建

2.1 QT安装

下载地址:http://www.qtcn.org/bbs/read-htm-tid-1075.html
本文选用版本5.12.0:http://download.qt.io/archive/qt/5.12/5.12.0/
无需注册:
VS2017安装ImageWatch、QT插件----Opencv矩阵Mat类可视化调试(C++调试入门)_第4张图片
安装勾选内容:
VS2017安装ImageWatch、QT插件----Opencv矩阵Mat类可视化调试(C++调试入门)_第5张图片

2.2 插件安装

装完QT后还需要安装插件才能在VS2017中调用,打开vs2017,“工具 > 扩展和更新>联机”搜索qt,并下载
VS2017安装ImageWatch、QT插件----Opencv矩阵Mat类可视化调试(C++调试入门)_第6张图片
但直接下载速度太慢了(不知道是不是个人原因),可以直接下载插件并安装:http://download.qt.io/development_releases/vsaddin/2.6.0/
下载完成后,双击运行,如下界面
VS2017安装ImageWatch、QT插件----Opencv矩阵Mat类可视化调试(C++调试入门)_第7张图片
配置QT工作目录
QT插件安装成功后,会在菜单栏找到QT VS Tools
在这里插入图片描述
选择“QT Options”
VS2017安装ImageWatch、QT插件----Opencv矩阵Mat类可视化调试(C++调试入门)_第8张图片

三、opencv常见的矩阵Mat类运算(实时更新)

1.reshape函数

cv::Mat::reshape(int cn, int rows=0)

cn为通道数,默认为0则保持原通道数不变
rows为reshape后矩阵的行数,默认为0则保持原行数不变

2.矩阵转置

cv::Mat B
cv::Mat A = B.t()

A即为B矩阵的装置

3.数据格式

CV_32FC2
32:32bits
F:Float浮点型
C:通道数,C2代表双通道,如常见的虚数矩阵存储,a+bi类型的数据,一个通道存实部,一个通道存虚部

4.矩阵最大、小值–minMaxLoc函数

minMaxLoc(src, minVal, maxVal, minLoc, maxLoc)

输入:
src为目标矩阵
输出:
minVal、maxVal:最小值、最大值
minLoc、maxLoc:最小值位置坐标、最大值位置坐标
注意:用法如下,minMaxLoc的输出对象应填写指针,如下面例子&maxVal,&maxLoc

cv::Point2i maxLoc;
double maxVal;
cv::minMaxLoc(response, NULL, &maxVal, NULL, &maxLoc);

你可能感兴趣的:(C++,c++,可视化,opencv)