0

私はリアルタイム ソフトウェアを作成しているため、完全に黒いマスクに対して cvFindContours が呼び出されることがよくあります。この場合、cvFindContours は例外をスローし、プログラムはクラッシュします。

cvFindContours が輪郭を見つけることができない場合、プログラムがクラッシュする代わりに、プログラムが次のコード行に移動するようにするにはどうすればよいでしょうか (単純に続行するだけです)。

ありがとう

PS: cvFindContours が輪郭を見つけられなくなるのを防ぐために、1 つのピクセルを常に自動的に白に保つことを考えましたが、これは不便です。

4

1 に答える 1

1

次のようなことを試してみませんか。

Mat black = Mat::zeros(Size(100, 100), CV_8UC1);

vector< vector<Point> > contours;

if(sum(black).val[0] > 0.0)
{
    findContours(black, contours, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);
}
else
{
    cout << "It's a black image, so I'm not going to do anything..." << endl;
}

cvSumこれは C++ インターフェイスを使用していますが、同じことを行うために使用できるはずです。したがって、画像がすべて黒の場合、画像にはゼロしか含まれていないことを意味します。したがって、黒マスクの場合は合計がゼロになります。

于 2011-10-29T02:42:29.330 に答える