2011-10-29 47 views
0

我正在創建實時軟件,因此經常在完全黑色的掩碼上調用cvFindContours。如果出現這種情況,cvFindContours引發異常,並且程序崩潰。cvFindContours()異常?

我該如何做到這一點,如果cvFindContours無法找到輪廓,而不是程序崩潰,程序只是移動到下一行代碼(只是簡單的繼續)?

感謝

PS:我想過會自動保持一個像素始終爲白色,以防止cvFindContours從不能夠找到一個輪廓,但是這會帶來不便給我。

+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

Holy Crap是的! 謝謝你,這就像你第二次拯救我的屁股:) – user1017485

+0

大聲笑!沒問題 :) – mevatron