Запуск проблемы с opencv 2.4.0 Функция findContours постоянно сбой. К сожалению, мне было очень сложно определить проблему. Надеюсь, что кто-то столкнулся с подобной проблемой.C++ OpenCV 2.4.0 findContours crashing with Kinect Depth Stream
Я собираю поток глубины с сенсора Kinect с помощью Microsoft K4W SDK 1.5, копируя его в Matrix OpenCV, а затем преобразуя его в изображение 8UC1 через cvtColor и порог. Я запускаю countNonZero, чтобы убедиться, что изображение не пустое, прежде чем передать его в findContours. Но даже простейшая реализация findcountours падает.
Вот мой основной код:
rawdepth = Mat(Size(640,480),CV_8UC4);
thresh = Mat::zeros(640,480,CV_8UC1);
// storage for contours
vector<vector<Point>> contours;
cvtColor(rawdepth,thresh,CV_RGB2GRAY);
threshold(thresh,thresh,0,255,THRESH_BINARY);
if(countNonZero(thresh) > 100) {
// This crashes
findContours(thresh,contours,RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
}
Я проверить, что фактический Mat передается в findcontours является одноканальным изображением, и что это не пустое (то есть, есть некоторые 500+ очков). Но мне интересно, если это проблема с кучей или потоком, так как я слышал, что findcontours могут действительно модифицировать входной Mat?
На этом этапе я попытаюсь использовать OpenCV 2.4.1, который был только что выпущен, хотя я не вижу никаких исправленных ошибок, которые указывают на устранение этой проблемы.
Любые идеи очень ценятся ...
Вы проследили крах обратно до 'findContours()'? – karlphillip
Да. На самом деле, я могу запустить другие функции, такие как Canny, на одном и том же изображении, и он отлично работает. Я также проверил, что «thresh» Mat передается findContours - это одноканальное изображение. – eclay