C# C“EmguCV错误”;OpenCV:u!=0“;

C# C“EmguCV错误”;OpenCV:u!=0“;,c#,emgucv,C#,Emgucv,我一直得到这个OpenCV:u!=0尝试匹配某些照片时出错。我的方法是这样的。ImageFile类有一些变量。即使我试图匹配一张照片,它也会这样做。这是: 未处理的异常:Emgu.CV.Util.CvException:OpenCV:u!=0 在Emgu.CV.CvInvoke.CvErrorHandler处(Int32状态、IntPtr funcName、IntPtr errMsg、IntPtr文件名、Int32行、IntPtr用户数据) 在Emgu.CV.Features2D.Feature

我一直得到这个
OpenCV:u!=0尝试匹配某些照片时出错。我的方法是这样的。ImageFile类有一些变量。即使我试图匹配一张照片,它也会这样做。这是:

未处理的异常:Emgu.CV.Util.CvException:OpenCV:u!=0

在Emgu.CV.CvInvoke.CvErrorHandler处(Int32状态、IntPtr funcName、IntPtr errMsg、IntPtr文件名、Int32行、IntPtr用户数据)

在Emgu.CV.Features2D.Feature2DInvoke.CvFeature2DDetectAndCompute(IntPtr feature2D、IntPtr image、IntPtr mask、IntPtr keypoints、IntPtr描述符、布尔使用提供的keypoints)

在Emgu.CV.Features2D.Feature2D.DetectAndCompute(IInputArray图像、IInputArray掩码、关键点向量、IOOutputArray描述符、布尔值使用提供的关键点)

公共异步任务BeginSearchSync()
{
var foundImageFiles=新列表();
Mat img=CvInvoke.Imread(_imagefiletobearch.FileInfo.FullName,ImreadModes.AnyColor);
var thredi=新线程(()=>
{
foreach(在_listOfSearchableImageFiles中的var-imageFile)
{
尝试
{
使用(var tempImage=CvInvoke.Imread(imageFile.FileInfo.FullName,ImreadModes.AnyColor))
{
var result=DrawMatches.Draw(tempImage、img、out long matchTime、out long score);
var窗口=新结果窗口(结果、分数);
ShowDialog();
}
}
捕获(例外情况除外)
{
WriteLine($”匹配文件{imageFile.Name}时出错);
控制台写入线(例如消息);
}
}
});
thredi.SetApartmentState(ApartmentState.STA);
thredi.Start();
返回文件;
}

该异常似乎表明应用程序占用了太多内存。就我而言,我的画质似乎太好了。将它们减少到一半就解决了问题。

是的,这也是我的原因。
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;
}