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

ss2ws0br  于 2023-10-23  发布在  其他
关注(0)|答案(2)|浏览(162)

我得到上述错误后复制和粘贴一些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

这就是错误:

3gtaxfhh

3gtaxfhh1#

我注意到你创建了自己的类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)
pcww981p

pcww981p2#

六年后,但可以帮助别人。只需将LoadImageType.Color替换为:CType(1,ImreadModes)正如@Jurjen所说,它只是一个整数,但来自ImreadModes枚举。

相关问题