OpenCV Anaconda Package Binding



我正在尝试导入非免费库(如SIFT surf surf(,这些库在适用于opencv 4的Conda包中不可用,但可以通过编译带有opencv_ENABLE_NONFREE=ON标志的opencv源代码(适用于c++和python(来获得。它在没有虚拟环境的情况下非常适用。但我想在anaconda虚拟环境中使用相同的编译库。我已按照https://pydeeplearning.com/opencv/install-opencv3-with-anaconda-python3-6-on-ubuntu-18-04/和其他一些类似的指令,但无法通过以下错误:

Python 3.7.6 (default, Jan  8 2020, 19:59:22) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.12.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import cv2                                                                                                    
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-c8ec22b3e787> in <module>
----> 1 import cv2
/opt/anaconda3/lib/python3.7/site-packages/cv2/__init__.py in <module>
94     if DEBUG: print('OpenCV loader: DONE')
95 
---> 96 bootstrap()
/opt/anaconda3/lib/python3.7/site-packages/cv2/__init__.py in bootstrap()
84     if DEBUG: print('OpenCV loader: replacing cv2 module')
85     del sys.modules['cv2']
---> 86     import cv2
87 
88     try:
ImportError: /lib/x86_64-linux-gnu/librsvg-2.so.2: undefined symbol: cairo_tag_end

这就是我在anaconda环境中最终使用sift和surf的方法:使用pip包管理器,通过以下命令安装opencv-python和opencv-controb-python包

pip安装opencv-contrib python opencv python

最后,不使用sift=cv2.xfeatures2d.sift.creat((,而使用sift=cv2.xfeatures2d_sift((

在使用anaconda-python3绑定编译opencv 4.4时,我遇到了类似的错误消息。

事实证明,这是由于系统中的librsvg与anaconda安装中的libcairo库不匹配造成的。

您可以使用LD_PRELOAD=path_to_the_system_libcairopython3。。。。以运行应用程序path_to_the_system_libcairo可以通过ldd path_to_he_system_librsvg|grep libcairo命令检索。

转到anaconda文件夹,将libcairo文件移动到备份位置(以防万一(。

最新更新