Моя среда разработки - Mingw32 bit CMake в Windows 7. (этот же код отлично работает в Linux)
Я использую cvFindContours () для обнаружения контуров с помощью OpenCV.
Я использую рекурсивный метод для перемещения результирующего CvSeq для доступа к контурам по уровням следующим образом:
void helperParseCurves(CvSeq* contour, int level) {
//Travel same level contours
if(contour->h_next != NULL) {
helperParseCurves(contour->h_next, level);
}
if(contour->v_next != NULL) {
helperParseCurves(contour->v_next, level+1);
}
//Travel child levels
for(int i=0; i<contour->total; i++){
//Try to access Point data -- Crash here when threshold level 114 ?
//Works when uncommented
CvPoint* p = CV_GET_SEQ_ELEM(CvPoint, contour, i);
}
}
Но приложение вылетает на линии CvPoint * p = CV_GET_SEQ_ELEM (CvPoint, контур, i);
Это происходит с некоторыми конкретными большими изображениями и прекрасно работает в Linux.
Я загрузил пример программы для демонстрации сценария на
http://dl.dropbox.com/u/17399055/opencv-test.zip
* скачать и скомпилировать с помощью CMake
* запустите код, используя образец изображения -
"OCvTest.exe test-img.tif"
* изменяет значение ползунка около 114, происходит сбой приложения.
*, если закомментирована строка # 27, работает нормально.
Есть какие-нибудь советы по этому поводу?
Может ли это быть ошибка OpenCV?
спасибо заранее.