2011-10-29 3 views
0

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

cvFindContoursが輪郭を見つけることができない場合、プログラムがクラッシュするのではなく、プログラムが次のコード行に移動するようにするにはどうすればよいですか?

おかげ

PS:私は、自動的に輪郭を見つけることができないからcvFindContoursを防ぐために、常に白い1つのピクセルを維持する考えたが、これは私には不便だろう。次のように何かをしようとしないのはなぜ

+0

'try'-' catch 'の呼び出しをラッピングすることをお勧めしますか? – Mankarse

+0

「まだ釣っている」とはどういう意味ですか? – Mankarse

+0

あなたは 'cvFindContours'を間違って使っていると思います。コードでどのように使用しているかの例を投稿してください。 – Mankarse

答えて

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; 
} 

これはC++インタフェースを使用しているが、あなたは同じことを達成するためにcvSumを使用することができるはずです。したがって、イメージがすべて黒であれば、イメージにはゼロのみが含まれていることを意味します。したがって、ブラックマスクの場合、合計はゼロになります。

+0

ホラー・クラップはい! これは、あなたが私のお尻を保存した2回目のようなものです:) – user1017485

+0

LOL!問題ない :) – mevatron

関連する問題