Так что мой случай сложный.Проблемы с связыванием Python cv2 при понижении OpenCV от 3.0.0 до 2.4.11
Сначала я установил OpenCV2.4.8 и начал использовать его для python2.7. Позже я планировал перейти на OpenCV3.0.0. Оба раза во время установки я следил за процедурой официальной документации. Все работало нормально, пока я не понял, что OpenCV3 не имеет модулей SIFT()
и SURF()
. После небольшого поиска я обнаружил, что они присутствуют в opencv_contrib. Сначала я попытался установить это, но по какой-то причине я не смог.
Позже я обнаружил, что эти модули присутствуют в OpenCV2.4.11 и планируют установить его. Снова после официальной процедуры я установил OpenCV2.4.11 получил то же самое SIFT()
importerror. После проверки OpenCV __version__
в python2 и Python3 я нашел следующий
- python2: "2.4.8"
- python3: "3.0.0"
Для проверки версии я использовал следующее код:
from cv2 import __version__
print(__version__)
к сожалению, у меня нет много памяти в /home
, поэтому я удалил OpenCV2.4.8 и OpenCV3.0.0 создавать папки после установки. Поэтому я попытался вручную удалить OpenCV2.4.8 и OpenCV3.0.0 и удалить все opencv из libs из /usr/local/libs/
и подкаталогов, а также все opencv-буферы из /usr/local/bins/
(следующий ответ в этом question).
После удаления всех файлов opencv я снова заново установил OpenCV2.4.11 и попытался запустить мой код. Он потерпел неудачу на этапе импорта в python2 давая
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: libopencv_core.so.2.4: cannot open shared object file: No such file or directory
в Python3
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: libopencv_core.so.3.0: cannot open shared object file: No such file or directory
Я снова проверил, если OpenCV2.4.11 присутствует или нет, и его там, но питон не обновил ранее сохраненную ссылку к opencv lib. Я застрял в этой ошибке с 2 дней без решения. Любая помощь будет оценена.
EDIT: : Есть ли файл поиска общей библиотеки, который использует python для хранения всех мест размещения разделяемых библиотек? Если не так, как это работает (как питон узнает, где искать OpenCV, как OpenCV не указан в pip freeze
)
EDIT2: я нашел еще одну ошибку. Раньше я не включил -D BUILD_SHARED_LIBS=ON
. На этот раз я сохранил его ON
и rand sudo ldconfig
после make
и make install
. Теперь у меня есть libopencv_core.so.2.4
в моем /usr/local/lib/
. Это символическая ссылка на libopencv_core.so.2.4.11
, присутствующую в той же папке. После ldconfig
, когда я проверил python2 import cv2
не обнаружил никакой ошибки, но __version__
все еще показывает '2.4.8'
. Я дважды проверял любой файл OpenCV2.4.8 .so и их нет. Как это все еще указывается на версию '2.4.8'
?