相比于Matlab,VS2017在调试C++代码的时候没那么方便,尤其是针对矩阵进行查看的时候,得一步步打印,而ImageWatch is a watch window for viewing in-memory bitmaps when debugging native C++ code.可以很好的帮助我们查看矩阵不同位置的具体数值,提高调试效率。QT也是很好的调试工具,任选一个即可。
目录
一、ImageWatch的安装
ImageWatch下载地址:https://marketplace.visualstudio.com/items?itemName=VisualCPPTeam.ImageWatch2017
直接安装即可,记得将VS2017关闭后在进行Image Watch的安装。安装后在代码中设置断点,运行程序,之后在“视图”–“其他窗口”–“Image Watch”,便可以显示当前内存的所有二维矩阵,如下,
放大后可以查看具体数值
二、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/
无需注册:
安装勾选内容:
2.2 插件安装
装完QT后还需要安装插件才能在VS2017中调用,打开vs2017,“工具 > 扩展和更新>联机”搜索qt,并下载
但直接下载速度太慢了(不知道是不是个人原因),可以直接下载插件并安装:http://download.qt.io/development_releases/vsaddin/2.6.0/
下载完成后,双击运行,如下界面
配置QT工作目录
QT插件安装成功后,会在菜单栏找到QT VS Tools
选择“QT Options”
三、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);