从这里复制并粘贴一些
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
我注意到您创建了自己的类,名为
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)
六年后,但可以对某人有所帮助。只需更换 加载图像类型.颜色 为了: CType(1,ImreadModes) 正如 @Jurjen 所说,它只是一个整数,但来自 ImreadModes 枚举。