Python cv2在将OpenCV从3.0.0降级到2.4.11时将问题链接起来

时间:2016-02-11 04:01:05

标签: python opencv uninstall downgrade

所以我的情况很棘手。

我首先安装了OpenCV2.4.8并使用python2.7启动它。后来我计划迁移到OpenCV3.0.0。在安装过程中我都遵循官方文档程序。一切正常,直到我意识到OpenCV3没有SIFT()SURF()模块。经过一番搜索,我发现它们出现在opencv_contrib中。首先我尝试安装,但由于某种原因,我无法安装。

后来我发现这些模块存在于OpenCV2.4.11中,并计划安装它。再次按照官方程序安装OpenCV2.4.11得到了相同的SIFT() importerror。检查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/和子目录以及/usr/local/bins/中的所有opencv二进制文件中删除所有opencv libs(在此{{3}中的答案之后) })。

删除所有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是否存在以及它在那里但是python还没有更新以前存储的opencv lib链接。自从2天没有解决方案以来我一直坚持这个错误。任何帮助将不胜感激。

修改: 是否有一些共享库查找文件,python用它来存储共享库的所有位置?如果不是这样的话(python如何识别在opencv中查找opencv的位置未在pip freeze中列出)

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

1 个答案:

答案 0 :(得分:1)

删除步骤:

  1. 删除opencv libs:sudo apt-get purge libopencv*
  2. 通过在python中尝试import cv2来验证是否已卸载cv2。它应该显示没有cv2模块存在
  3. 按照this sh file
  4. 安装opencv2.4.11
  5. sudo ldconfig
  6. 之后运行sudo make install
  7. 事情通常应该有效,但在我的情况下不起作用,因为/usr/local/lib/python2.7/dist-packages/缺少cv2.so.为此,从/<opencv-2.4.11 unzip locaiton>/release/lib/cv2.so手动复制到/usr/local/lib/python2.7/dist-packages/。使用sudo获取权限。
  8. 现在import cv2将起作用,__version__'2.4.11'