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