我正在創建實時軟件,因此經常在完全黑色的掩碼上調用cvFindContours。如果出現這種情況,cvFindContours引發異常,並且程序崩潰。cvFindContours()異常?
我該如何做到這一點,如果cvFindContours無法找到輪廓,而不是程序崩潰,程序只是移動到下一行代碼(只是簡單的繼續)?
感謝
PS:我想過會自動保持一個像素始終爲白色,以防止cvFindContours從不能夠找到一個輪廓,但是這會帶來不便給我。
我正在創建實時軟件,因此經常在完全黑色的掩碼上調用cvFindContours。如果出現這種情況,cvFindContours引發異常,並且程序崩潰。cvFindContours()異常?
我該如何做到這一點,如果cvFindContours無法找到輪廓,而不是程序崩潰,程序只是移動到下一行代碼(只是簡單的繼續)?
感謝
PS:我想過會自動保持一個像素始終爲白色,以防止cvFindContours從不能夠找到一個輪廓,但是這會帶來不便給我。
你爲什麼不試一下如下:
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
來完成同樣的事情。所以,如果圖像全黑,那意味着圖像只包含零。因此,當它是黑色面具時,總和將爲零。
Holy Crap是的! 謝謝你,這就像你第二次拯救我的屁股:) – user1017485
大聲笑!沒問題 :) – mevatron
嘗試在'try'-'catch'包裝呼叫也許? – Mankarse
你是什麼意思「仍然捕獲」? – Mankarse
我懷疑你不正確地使用'cvFindContours'。請張貼您在代碼中使用它的例子。 – Mankarse