我使用 Emgu.CV (OpenCV) 来查找图像中的增量,但有时我会遇到访问冲突异常,导致我的应用程序崩溃。
在深入调试后,我发现(blobs.Values
):
List<CvBlob> listOfBlobs = blobs.Values.ToList();
返回 1733 个项目,当我执行以下操作时:
但是当我浏览列表时,我得到了例外:
if (resultedRectangles[j].Contains(listOfBlobs[i].BoundingBox))
我检查并发现异常发生在:i = 418:
+BoundingBox '(new System.Collections.Generic.Mscorlib_CollectionDebugView(listOfBlobs)).Items[418].BoundingBox' 引发了类型为 'System.AccessViolationException' System.Drawing.Rectangle {System.AccessViolationException} 的异常
我看到列表中的最后一个有效值是 417。
我有 2 个问题: 1. 为什么blobs.Values.ToList();
返回这样损坏的数据?2.如何在访问之前检查值以防止System.AccessViolationException
?