[英]Python cv2 linking problems while downgrading OpenCV from 3.0.0 to 2.4.11
所以我的案子很棘手。
我首先安装了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__
后,我发现了以下内容
为了检查版本,我使用了以下代码:
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 bins(以下回答) 问题 )。
删除所有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
。 这次我在make
和make install
之后将其保持ON
并使用rand 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'
?
删除步骤:
sudo apt-get purge libopencv*
import cv2
来验证是否已卸载import cv2
。 它应该显示不存在cv2模块 sudo make install
之后运行sudo ldconfig
/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'
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.