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

时间:2017-04-02 11:55:00

标签: vb.net visual-studio emgucv opencv3.0

我从此处复制并粘贴了一些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

这是错误: enter image description here

These are my project files

1 个答案:

答案 0 :(得分:0)

我注意到您创建了自己的名为LoadImageType.vb的类。但是,LoadImageType已经是OpenCV enum。您收到此错误是因为您可能根本没有引用此类,或者您没有初始化它(另请参阅this link)。

我建议您删除自己创建的自定义类并使用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)