Если у вас не работает OpenCV под 64 бит…

Боролся недавно с одной проблемой — решил поделиться с вами ее решением, если вдруг вы нашли мою страницу, например, через Google 😉 Вряд ли рядовой читатель моего блога сталкивался с такой же проблемой. Потому и уповаю на Google 🙂

Итак, библиотека распознавания образов — OpenCV — упорно не хочет работать на Linux Fedora Core 13 (FC13) под 64 битами! Причем как версия 1.1, так и версия 2.2. Причем,  баг проявлялся на уровне мистики — все компилированные версии opencv падали в segmentation fault (core file), и только на 64 бит, а в интернете про эту проблему совсем ничего — как будто ее и нет!  Если ставить opencv из RPM, то можно поставить 2.0, но и с ней есть проблемы (не работал perl модуль Image::ObjectDetect — сейчас он работает, но с версии 2.1). Нужна была либо 1.1, либо выше 2.0. А вот если скачать 2.2 с сайта и собрать — она нормально собереться, но при работе с ней ваши программы упорно будут выпадать в core файлы (segmentation fault). То же касается версии 1.1. Вообщем, гуглил муглил я, копался в core файлах с отладчиком gdb и выяснил, что падает она в cvCanny функции. И нашел я вот этот баг. И кто бы мог подумать, что это глюки не самой OpenCV! Я то все время думал, что разработчики opencv виноваты. Оказалось, что проблема куда глубже — компилятор GCC 4.4.3 и ранее имел баг при оптимизации кода. Результат — некоторые программы и библиотеки под 64 битами могут доходить до segfault. Не стал исключением и OpenCV (сколько таких скрытых багов могло «подтянуться» к другим библиотекам и программам — можно только гадать). Вообщем, проблема решилась обновлением GCC компилятора из репозитария Fedora Core 13 и последующей перекомпиляцией OpenCV. После проверил — обе версии — 1.1 & 2.2 работали на отлично.

Если у вас не работает OpenCV под 64 бит…: 2 комментария

Обсуждение закрыто.