尝试匹配某些照片时,我一直收到此OpenCV: u != 0
错误。我的方法看起来像这样。 ImageFile类具有一些变量。即使我要匹配一张照片,它也会这样做。 Stacktrace是:
未处理的异常:Emgu.CV.Util.CvException:OpenCV:u!= 0
在Emgu.CV.CvInvoke.CvErrorHandler(Int32状态,IntPtr函数名称,IntPtr errMsg,IntPtr文件名,Int32行,IntPtr用户数据)
在Emgu.CV.Features2D.Feature2DInvoke.CvFeature2DDetectAndCompute(IntPtr feature2D,IntPtr图像,IntPtr掩码,IntPtr关键点,IntPtr描述符,布尔useProvidedKeyPoints)
在Emgu.CV.Features2D.Feature2D.DetectAndCompute(IInputArray图像,IInputArray掩码,VectorOfKeyPoint键点,IOutputArray描述符,布尔useProvidedKeyPoints)
public async Task<List<ImageFile>> BeginSearchAsync()
{
var foundImageFiles = new List<ImageFile>();
Mat img = CvInvoke.Imread(_imageFileToBeSearched.FileInfo.FullName, ImreadModes.AnyColor);
var thredi = new Thread(() =>
{
foreach (var imageFile in _listOfSearchableImageFiles)
{
try
{
using (var tempImage = CvInvoke.Imread(imageFile.FileInfo.FullName, ImreadModes.AnyColor))
{
var result = DrawMatches.Draw(tempImage, img, out long matchTime, out long score);
var window = new ResultWindow(result, score);
window.ShowDialog();
}
}
catch (Exception ex)
{
Console.WriteLine($"Error during matching file {imageFile.Name}");
Console.WriteLine(ex.Message);
}
}
});
thredi.SetApartmentState(ApartmentState.STA);
thredi.Start();
return foundImageFiles;
}
最佳答案
该异常似乎表明该应用占用了太多内存。就我而言,我似乎对图片的质量太高。将它们减少一半可以解决问题。