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

xxls0lw8  于 2022-11-15  发布在  其他
关注(0)|答案(7)|浏览(391)

我在VS2010中编写了一个OPENCV项目,结果并不是我所期望的,所以我运行了调试器,看看问题出在哪里。当我想看到加载的图像中的数据时,我不知道如何做,所以如果我想看到我的图像中的数据,我应该怎么做?在matlab中,查看图像的不同通道是非常简单的,即:

a=imread('test.jpg');
p1 = a(:,:,1)
p2 = b(:,:,2)

.
.

在opencv中我写了同样的东西,但我不知道如何像Matlab一样一次看到所有的元素。

a= imread("test.jpg")
split(a,planes);
    vector<Mat> T1;
    T1 = planes[0];

//如何在调试代码时看到T1内部的数据?

kiayqfof

kiayqfof1#

我认为这就是您正在寻找的-它是一个很棒的Visual Studio附加组件
https://bitbucket.org/sergiu/opencv-visualizers
只需下载安装程序,确保VS关闭,运行它,重新打开VS,瞧!现在,当你指向一个OpenCV数据结构时,所有的信息都会显示出来。
限制条件:我看到了一些多通道图像的问题(它只显示第一个通道),而且它在显示大矩阵时也有问题。如果你想查看大矩阵中的原始数据,你可以使用带有调试变量的老的好的VS技巧:在断点处停止,转到“监视”选项卡,并在此处写入

((float*)myMat.data) ,10

其中float是矩阵类型,myMat是矩阵,10是要打印的值的个数。它将在myMat.data的内存位置显示前10个值。如果没有正确选择数据类型,将看到垃圾。在我的示例中,myMat的类型为cv::Mat。
不要忘记可视化工具的强大功能:

imshow("Image", myMat);

如果您的数据适合一个图像。您可以使用contrib模块的色彩Map表来增强您的可视化工具。

tv6aics1

tv6aics12#

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

r1zk6ea1

r1zk6ea13#

我建议使用NativeViewer扩展。它实际上在预览窗口中显示图像的内容,而不仅仅是格式正确的信息。

c90pui9n

c90pui9n4#

如果您不想使用Visual Studio的插件或扩展,可以通过键入以下内容在调试监视选项卡中逐个访问这些元素:
T1.数据[T1.步骤缓冲区[0]*i + T1.步骤缓冲区[1]*j];
其中,i是要查看的行,j是要查看的列。

7d7tgy0s

7d7tgy0s5#

下载imagewatch后,请使用监视窗口中的命令(imagesLoc._Myfirst)[0]
矢量中图像的索引

c9qzyr3d

c9qzyr3d6#

您可以像下面这样使用立即窗口和extension方法

/// <summary>
    /// Displays image
    /// </summary>
    public static void Display (this Mat m, Rect rect = default, string windowName = "")
    {
        if (string.IsNullOrEmpty(windowName))
        {
            windowName = m.ToString();
        }
        var img = rect == default ? m : m.Crop(rect);

        double coef = Math.Min(1600d / img.Width, 800d / img.Height);

        Cv2.ImShow(windowName, img.Resize(new Size(coef * img.Width, (coef * img.Height) > 1 ? coef * img.Height : 1)));
        Cv2.WaitKey();
    }

然后在断点处停止并在即时窗口中调用yourImage.Display()。

1sbrub3j

1sbrub3j7#

如果您可以使用CLion,则可以利用OpenCV Image Viewer插件,该插件在调试时只需单击即可显示矩阵。
https://plugins.jetbrains.com/plugin/14371-opencv-image-viewer

免责声明:我是这个插件的作者

相关问题