在python中导入CV2给出未定义的符号错误

时间:2019-09-13 17:39:33

标签: python opencv

我已经安装了同时具有python2.7和python3.5绑定的opencv 3.4.0。我能够在python2中成功导入和使用opencv,但不能在python3中使用。我收到以下错误:

ImportError:/usr/local/lib/libopencv_text.so.3.4:未定义的符号:_ZNK2cv3dnn19experimental_dnn_v33Net14getLayerShapesERKSt6vectorIiSaIiEEiRSi3_IS5_SaIS5_EESA

这一直是暂时的,直到我出于CUDA兼容性目的而不得不升级CUDNN为止。我已经清理,卸载并重新安装了opencv,但此问题尚未解决。

我的其他设置如下: Ubuntu 16.04 cuDNN 7.6.1(我也尝试过使用7.6.3) CUDA 10.0

由于其他依赖性,我只能保留上述版本。

谢谢。

2 个答案:

答案 0 :(得分:1)

A real linux user compile the software by itself :P

克隆opencv和contrib依赖项:

git clone https://github.com/opencv/opencv.git --depth=1
git clone --depth=1 https://github.com/opencv/opencv_contrib.git

为了最大程度地减少编译时间(在旧环境中可以超过8h),可以指定GPU的体系结构。 (这里是一个仅从与硬件相关的源编译opencv的示例)

注意:
CUDA_GENERATION与您的GPU ARCH相关。
更改与您的python库相关的路径(替换/ opt / XXXXXXXX)

> export JAVA_HOME=/opt/DEVOPS/SDK/jvm/jdk-11.0.4/ ; cmake3 .. -D \
INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D WITH_CUDA=ON \
-D WITH_GTK=ON -D WITH_OPENGL=ON -D ENABLE_CXX11=ON -D BUILD_EXAMPLES=ON \
 -D OPENCV_EXTRA_MODULES_PATH=/opt/SP/packages/opencv_contrib/modules -D \
BUILD_opencv_java=ON -D BUILD_opencv_python2=ON -D BUILD_opencv_python3=ON \ 
-D CUDA_FAST_MATH=ON -D CUDA_GENERATION="Maxwell" -D WITH_OPENMP=ON -D \ 
BUILD_TESTS=OFF -D OPENCV_ENABLE_NONFREE=ON -D BUILD_TIFF=ON -D WITH_OPENCL=ON \ 
-D WITH_IPP=ON -D WITH_TBB=ON -D WITH_EIGEN=ON -D WITH_V4L=ON -D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF -D CMAKE_BUILD_TYPE=RELEASE -D \ 
CMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)") \ 
-D PYTHON3_EXECUTABLE=$(which python3) -D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
 -D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \
 -D PYTHON3_LIBRARY=/opt/DEVOPS/SDK/anaconda3/lib \ 
-D OPENCV_PYTHON3_INSTALL_PATH=/opt/DEVOPS/SDK/anaconda3/lib/python3.7/site-packages \
 -D PYTHON3_DEFAULT_EXECUTABLE=/opt/DEVOPS/SDK/anaconda3/bin/python \
 -D OPENCV_ENABLE_NONFREE=ON

答案 1 :(得分:0)

您应该下载ANACONDA python环境,并使用终端通过pip安装opencv。

在python终端中输入以下命令:

python -m pip install opencv-python

这应该安装最新版本的cv2。

好运的朋友。