如何在visual studio中使用opencv查看图像数据?

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内的数据?

Sam*_*Sam 6

我认为这就是你要找的 - 它是一个很棒的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来增强可视化工具.


Ela*_*782 5

我真的不敢相信还没有人建议使用Image Watch。这是有史以来最神奇的插件。它会在调试时向您显示包含所有 Mat 变量(图像(灰度和颜色)、矩阵)的视图,还有一些有用的东西,例如缩放或对比度拉伸,您甚至可以直接在插件中实时应用更复杂的功能。它使调试任何类型的图像操作变得轻而易举,如果您使用 cv::Mat 矩阵进行计算和线性代数,它会非常有帮助。

在此处输入图片说明