ウェブカメラフィードを介してさまざまなフィルターを作成するプログラムを実行しようとしていますが、BLOB分析やその他の問題が発生しました。
グラスファイア機能をアクティブにするたびにsegFaultが発生します。これが私のgrassfire関数のコードです:
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);
}
そして、それがどのように呼ばれるかは、すべてのフレームを実行するスイッチケースによるものです。これは、すべてのフレーム更新が呼び出されることを意味します
関数自体は、他のスコープ外で宣言されています。
非常に重いフィルターであり、大量のメモリを使用している可能性があることはわかっていますが、他のいくつかのフィルターと比較すると、それほど悪くないため、segFaultが発生する理由がわかりません。
また、別のフィルターでsegFaultが発生しますが、これはメモリ使用量がそれほど要求されないはずです。私はwin7のコードブロックでopenframeworksを使用しています。