Python的OpenCV导入错误与python 3.5

问题描述:

我有一些困难与python 3.5安装opencv。Python的OpenCV导入错误与python 3.5

我已经挂了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 Traceback (most recent call last): File "/Users/Jamie/Desktop/tester/test.py", line 2, in import cv File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv.py", line 1, in from cv2.cv import * ImportError:dlopen(/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv2.so, 2): Symbol not found: _PyCObject_Type Referenced from: /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv2.so Expected in: flat namespace in /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

有人能帮忙吗?

非常感谢

+1

你试图加载编译为一个Python的OpenCV的OpenCV的Python 2使用Python 3.5?它不会工作。我在这里记录了几个月前我如何为Python 3编译opencv3,如果它有帮助的话:https://github.com/julienpalard/grid-finder –

找到了答案 - 遵循this website指示,但你必须改变到Python版本所使用。

此外,我没有打扰虚拟环境。

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

然后它工作。

+1

对于将来,您也可以使用'ln -s cv2创建一个符号链接.cpython-35m-darwin.so cv2.so',这样你就可以使用'import cv2'导入它。 :-) – gglasses

+1

嘿gglasses,我如何创建符号链接,如你所说? – Tam

+0

ln -s cv2.cpython-35m-darwin.so cv2.so – user391339

杰出的答案JamieS,我也跟着那个网站。我试图让整个过程重复这些使目标..

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虚拟ENV但是你需要做到这一点,那么:

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版本,你可以使用PIP命令 打开CMD(管理模式),然后键入

PIP安装