python 3.5的Python OpenCV导入错误

Posted

技术标签:

【中文标题】python 3.5的Python OpenCV导入错误【英文标题】:Python OpenCV import error with python 3.5 【发布时间】:2016-09-30 01:37:27 【问题描述】:

我在使用 python 3.5 安装 opencv 时遇到一些困难。

我已经链接了 cv 文件,但是在 import cv2 时,我收到一条错误消息,提示 ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv2.so, 2): Symbol not found: _PyCObject_Type 或更具体:

/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/Jamie/Desktop/tester/test.py 回溯(最近一次通话最后): 文件“/Users/Jamie/Desktop/tester/test.py”,第 2 行,在 导入简历 文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv.py”,第 1 行,在 从 cv2.cv 导入 * ImportError:dlopen(/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv2.so,2):找不到符号:_PyCObject_Type 引用自:/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv2.so 预期在:平面命名空间 在 /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv2.so

我已将位置 /usr/local/Cellar/opencv/2.4.12_2/lib/python2.7/site-packages 中的 cv.py 和 cv2.so 正确链接到 /Library/Frameworks/Python.framework/Versions/3.5/bin

有人可以帮忙吗?

非常感谢

【问题讨论】:

您是否尝试加载使用 Python 3.5 为 Python 2 编译的 opencv?它行不通。我在这里记录了几个月前我如何为 Python 3 编译 opencv3,如果有帮助的话:github.com/julienpalard/grid-finder 【参考方案1】:

无需更改python版本,使用pip命令即可 打开 cmd(管理员模式)并输入

pip install opencv-python

【讨论】:

【参考方案2】:

找到答案 - 按照this website 上的说明进行操作,但您必须更改为您正在使用的 python 版本。

另外,我没有为虚拟环境烦恼。

最后 cv2.so 在你创建的 build/lib 文件夹中实际上被称为 cv2.cpython-35m-darwin.so。

然后就可以了。

【讨论】:

未来,您还可以使用ln -s cv2.cpython-35m-darwin.so cv2.so 创建符号链接,以便使用import cv2 导入它。 :-) 嘿 gglasses,我如何按照你说的创建符号链接? ln -s cv2.cpython-35m-darwin.so cv2.so【参考方案3】:

很好的答案 JamieS,我也关注了那个网站。我试图通过这些 make 目标使整个过程可重复..

opencv-build:
    source $(VENV_DIR)/bin/activate && \
    cd $(OPENCV_SRC) && \
    mkdir -p build && \
    cd build && \
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=$(realpath $(BUILD_DIR)) \
    -D PYTHON3_NUMPY_INCLUDE_DIRS=$(realpath $(VENV_DIR)/lib/python3.5/site-packages/numpy/core/include) \
    -D BUILD_opencv_python3=ON \
    -D INSTALL_C_EXAMPLES=OFF \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D OPENCV_EXTRA_MODULES_PATH=$(realpath $(OPENCV_CONTRIB_SRC)/modules) \
    -D BUILD_EXAMPLES=ON ..  && \
    make -j4 -C . 

要让它出现在 python3 虚拟环境中,但是你需要这样做:

so-copy:
    cp $(realpath $(OPENCV_SRC)/build/lib/cv2.so) $(realpath $(VENV_DIR)/lib/python3.5/site-packages/)
    cp $(realpath $(OPENCV_SRC)/build/lib/python3/cv2.cpython-35m-darwin.so) $(realpath $(VENV_DIR)/lib/python3.5/site-packages/)

然后你可以测试它是否有效..

import cv2  # Imports without problems...

我认为对于 osx,cv2.cpython-35m-darwin.so 是您唯一需要的,但我只是复制了两个。

【讨论】:

以上是关于python 3.5的Python OpenCV导入错误的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 3.1.0 和 Python 3.5

python 在Python 3.5上的Mac OS Sierra上安装OpenCV

无法使用 python 3.5 安装 opencv 3.1,仅适用于 2.7

ubuntu 16.04 安装 opencv +contrib (3.2.0) + python 3.5

Python 3.5、OpenCV 3.2、Windows 7 64 位、Anaconda 3、“ImportError:DLL 加载失败”

PYTHON3.5安装及OPENCV安装