我正在尝试做一个程序,通过网络摄像头提要创建各种过滤器,并在 BLOB 分析和其他一些问题上遇到了一些问题。
每次我激活我的草火功能时,我都会收到 segFault。这是我的草火功能的代码:
void testApp::grassFire(int mask_Y, int mask_X, unsigned char labelCnt)
{
blobArray[mask_Y * camWidth + mask_X] = labelCnt;
if (mask_X + 1 <= camWidth - 1 && blobArray[mask_Y * camWidth + mask_X + 1] == 0)
grassFire(mask_Y, mask_X + 1, labelCnt);
if (mask_Y + 1 <= camHeight - 1 && blobArray[(mask_Y + 1) * camWidth + mask_X] == 0)
grassFire(mask_Y + 1, mask_X, labelCnt);
if (mask_X - 1 >= 0 && blobArray[mask_Y * camWidth + mask_X - 1] == 0)
grassFire(mask_Y, mask_X - 1, labelCnt);
if (mask_Y - 1 >= 0 && blobArray[(mask_Y - 1) * camWidth + mask_X] == 0)
grassFire(mask_Y - 1, mask_X, labelCnt);
}
它的调用方式是由每帧运行的 switch case这意味着它在每帧更新时被调用
函数本身在任何其他范围之外声明。
我知道这是一个非常重的过滤器,它可能会使用大量内存,但与其他一些过滤器相比,它并没有那么糟糕,所以我不知道为什么会出现 segFault。
我还在另一个过滤器上得到了 segFault,这不应该是对内存使用的要求。我在 win 7 的代码块中使用 openframeworks。