我使用Emgu包装打开的CV缝合平面(扫描模式)图像,因为我是在c#编码。这些图片是我的chrome窗口等的屏幕截图,我在那里向下滚动页面并拍摄了多张屏幕截图。我已经浏览了Stackoverflow上已经发布的各种问题。下面是我的代码,由于一些重复出现的异常,我无法获得所需的结果。
我的代码:
private string StitchFirstNImages(List<Mat> matList, string result_name)
{
using (Stitcher stitcher = new Stitcher(Stitcher.Mode.Scans, true))
using (AKAZEFeaturesFinder finder = new AKAZEFeaturesFinder())
{
stitcher.SetFeaturesFinder(finder);
stitcher.WaveCorrection = false;
stitcher.SetWarper(new PlaneWarper(1));
using (VectorOfMat vm = new VectorOfMat())
{
Mat result = new Mat();
for (int i = 0; i < matList.Count; i++)
{
vm.Push(matList[i]);
}
Console.WriteLine("Started Stitching = "+ matList[0].ToString());
Stitcher.Status status = stitcher.Stitch(vm, result);
if (status != Stitcher.Status.Ok)
{
Console.WriteLine("Can't stitch images, error code = " + status);
return String.Empty;
}
Emgu.CV.CvInvoke.Imwrite(result_name, result);
Console.WriteLine("stitching completed successfully\n" + result_name + " saved!");
return result_name;
}
}
}
一些stackoverflow文章建议关闭WaveCorrection,但这对我没有帮助。我试图在这里提供一组63个图像(我的一组甚至可能包含100个图像)并一次性缝合它们。我不是在做对缝。我的套装只包含
png images
.
使用的图像集:
https://ankurqa.mangopulse.com/sf/MzYyNF8xMTIyMjg2
面对以下例外情况:
System.AccessViolationException异常
HResult=0x80004003
消息=试图读取或写入受保护的内存。这通常表示其他内存已损坏。
Source=无法计算异常源
堆栈跟踪:
无法计算异常堆栈跟踪
无法分配xxxxxx字节
呃你需要更多的信息
我是新的缝合,上面的代码,我写的是通过以下多篇文章。
如果我做得对的话,有人能建议一下吗?
如果我需要更改功能查找程序,请告诉我?(我尝试了OrbFeaturesFinder,但还是得到了上面的第一个异常)
我已经经历了多个stackoverflow问题,并试图调整我的代码,但没有积极的结果。