Rah*_*ahi 1 debugging opencv image visual-studio-2010
我在VS2010中写了一个OPENCV项目,结果不是我预期的,所以我运行调试器来查看问题所在.当我想看到加载的图像中的数据时,我不知道该怎么做,所以如果我想看到我的图像中的数据我该怎么办?在matlab中看到图像的不同通道非常简单,即
a=imread('test.jpg');
p1 = a(:,:,1)
p2 = b(:,:,2)
.
.
Run Code Online (Sandbox Code Playgroud)
在opencv中我写了同样的东西,但我不知道如何像Matlab一样立即看到所有元素.
a= imread("test.jpg")
split(a,planes);
vector<Mat> T1;
T1 = planes[0];
Run Code Online (Sandbox Code Playgroud)
//调试代码时如何查看T1内的数据?
我认为这就是你要找的 - 它是一个很棒的Visual Studio插件
https://bitbucket.org/sergiu/opencv-visualizers
只需下载安装程序,确保VS已关闭,运行它,重新打开VS并瞧!现在,当您指向OpenCV数据结构时,会显示各种不错的信息.
限制:我看到了多通道图像的一些问题(它只显示了第一个通道),并且在显示大型矩阵时也遇到了问题.如果你想在一个大矩阵中看到原始数据,你可以使用旧的好VS技巧和调试变量:在断点处停止,转到Watch选项卡,然后在那里写
((float*)myMat.data) ,10
Run Code Online (Sandbox Code Playgroud)
float是矩阵类型,myMat是你的矩阵,10是你想要打印的值的数量.它将在myMat.data的内存位置显示前10个值.如果您没有正确选择数据类型,您将看到垃圾.在我的例子中,myMat的类型为cv :: Mat.
永远不要忘记可视化器的力量:
imshow("Image", myMat);
Run Code Online (Sandbox Code Playgroud)
如果您的数据适合图像.您可以使用contrib模块的colormap来增强可视化工具.
我真的不敢相信还没有人建议使用Image Watch。这是有史以来最神奇的插件。它会在调试时向您显示包含所有 Mat 变量(图像(灰度和颜色)、矩阵)的视图,还有一些有用的东西,例如缩放或对比度拉伸,您甚至可以直接在插件中实时应用更复杂的功能。它使调试任何类型的图像操作变得轻而易举,如果您使用 cv::Mat 矩阵进行计算和线性代数,它会非常有帮助。
