【问题标题】:Python OpenCV import error with python 3.5python 3.5的Python OpenCV导入错误
【发布时间】: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

标签: python opencv


【解决方案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 是您唯一需要的,但我只是复制了两个。

    【讨论】:

      猜你喜欢
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      • 2015-07-31
      • 2020-02-03
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      相关资源
      最近更新 更多