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()。在检查python2和python3中的OpenCV __version__时,我发现了以下内容

  • 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,并从/usr/local/libs/和子目录中删除所有 opencv 库,并从/usr/local/bins/中删除所有 opencv 箱(以下回答(。

删除所有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

在 Python 3 中

>>> 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 是否存在及其存在,但 python 尚未更新以前存储的 opencv 库链接。自从 2 天以来,我一直被困在此错误上,没有解决方案。任何帮助将不胜感激。

编辑:是否有一些 python 用来存储共享库所有位置的共享库查找文件?如果不是,这是如何工作的(python如何识别在哪里查找opencv,因为opencv未在pip freeze中列出(

编辑2:我发现了另一个错误。我以前没有启用过-D BUILD_SHARED_LIBS=ON。这次我把它留ON,在makemake install之后兰德sudo ldconfig.现在我的/usr/local/lib/里有libopencv_core.so.2.4.它是指向同一文件夹中libopencv_core.so.2.4.11的符号链接。ldconfig后,当我检查python2时import cv2没有显示任何错误,但__version__仍然显示'2.4.8'.我仔细检查了任何 OpenCV2.4.8 .so 文件,但没有。它如何仍然指向版本 '2.4.8'

删除步骤:

  1. 通过以下方式删除 OpenCV 库: sudo apt-get purge libopencv*
  2. 通过尝试在 python 中import cv2来验证是否卸载了 cv2。它应该显示不存在 cv2 模块
  3. 按照这个 sh 文件安装 opencv2.4.11
  4. sudo make install后运行sudo ldconfig
  5. 事情通常应该有效,但在我的情况下不起作用,因为 cv2.so /usr/local/lib/python2.7/dist-packages/中丢失了。为此,请手动从/<opencv-2.4.11 unzip locaiton>/release/lib/cv2.so复制到/usr/local/lib/python2.7/dist-packages/。使用sudo获取权限。

现在import cv2会起作用,__version__'2.4.11'.

最新更新