cvFindContours () исключение? - PullRequest
       0

cvFindContours () исключение?

0 голосов
/ 29 октября 2011

Я создаю программное обеспечение в реальном времени, поэтому часто cvFindContours вызывается на абсолютно черной маске.Если в этом случае cvFindContours выдает исключение, и программа вылетает.

Как бы я сделал так, чтобы, если cvFindContours не смог найти контуры, вместо сбоя программы, программа просто переместилась на следующую строкукод (просто продолжение продолжается)?

Спасибо

PS: я думал о том, чтобы один пиксель автоматически всегда оставался белым, чтобы cvFindContours не смог найти контур, но мне это было бы неудобно.

1 Ответ

1 голос
/ 29 октября 2011

Почему бы вам не попробовать что-то следующее:

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, чтобы выполнить то же самое. Таким образом, если изображение полностью черное, это означает, что изображение содержит только нули. Таким образом, сумма будет равна нулю, когда это черная маска.

...