错误“LoadImage Type”未声明。由于其保护级别,可能无法访问

问题描述 投票:0回答:2

从这里复制并粘贴一些

code
后,我得到了上述错误,github。 你们能帮我解决它吗?我的代码:

Imports Emgu.CV                 'usual Emgu Cv imports
Imports Emgu.CV.CvEnum          '
Imports Emgu.CV.Structure       '
Imports Emgu.CV.UI
Public Class frmMain
    Private Sub btnOpenFile_Click(sender As Object, e As EventArgs) Handles btnOpenFile.Click

LoadImageType
给了我一些建议,我尝试过但没有得到帮助。

            imgOriginal = New Mat(ofdOpenFile.FileName, LoadImageType.Color)
        Catch ex As Exception                                                       
        CvInvoke.GaussianBlur(imgGrayscale, imgBlurred, New Size(5, 5), 1.5)
        CvInvoke.Canny(imgBlurred, imgCanny, 100, 200)
        ibOriginal.Image = imgOriginal              'update image boxes
        ibCanny.Image = imgCanny                    '
    End Sub
End Class

这是错误:

vb.net visual-studio emgucv opencv3.0
2个回答
0
投票

我注意到您创建了自己的类,名为

LoadImageType.vb
。然而,
LoadImageType
已经是OpenCV
enum
。您收到此错误是因为您可能根本没有引用此类,或者没有初始化它(另请参阅此链接)。

我建议您删除您创建的这个自定义类并使用 OpenCV

enum
。这个
enum
位于
Emgu.CV.CvEnum
命名空间中。也许特别指定您想要使用
CVEnum
命名空间:

imgOriginal = New Mat(ofdOpenFile.FileName, CvEnum.LoadImageType.Color)
'You can even try this
imgOriginal = New Mat(ofdOpenFile.FileName, Emgu.CV.CvEnum.LoadImageType.Color) 

如果这不起作用,为什么不尝试看看是否可以专门输入一个整数?

LoadImageType
枚举只不过是到整数的转换(参见 docs)。因此对于颜色,您应该输入值
1
。如果这有效,那么您就知道使用枚举出了问题:

imgOriginal = New Mat(ofdOpenFile.FileName, 1)

如果这仍然不起作用,为什么不使用

imread
方法(参见 docs)?我总是使用没有
LoadImageType enum
的那个,完全没有问题:

Dim img As Mat
img = CvInvoke.Imread(ofdOpenFile.FileName)

或者如果你特别想使用

LoadImageType
你也可以尝试:

Dim img As Mat
img = CvInvoke.Imread(ofdOpenFile.FileName, CvEnum.LoadImageType.Color)

0
投票

六年后,但可以对某人有所帮助。只需更换 加载图像类型.颜色 为了: CType(1,ImreadModes) 正如 @Jurjen 所说,它只是一个整数,但来自 ImreadModes 枚举。

© www.soinside.com 2019 - 2024. All rights reserved.