JamieS
JamieS

Reputation: 113

Python OpenCV import error with python 3.5

I am having some difficulties installing opencv with python 3.5.

I have linked the cv files, but upon import cv2 I get an error saying ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv2.so, 2): Symbol not found: _PyCObject_Type or more specifically:

/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

I have linked cv.py and cv2.so from location /usr/local/Cellar/opencv/2.4.12_2/lib/python2.7/site-packages correctly into /Library/Frameworks/Python.framework/Versions/3.5/bin

Would anybody be able to help please?

Thanks very much

Upvotes: 4

Views: 13195

Answers (3)

aman
aman

Reputation: 61

No need to change the python version, you can just use the pip command open cmd ( admin mode) and type

pip install opencv-python

Upvotes: 6

stephanve
stephanve

Reputation: 94

Great answer JamieS, I also followed that website. I tried to make the whole process repeatable with these make targets..

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 . 

To make it appear in python3 virtual env however you need to do this then:

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/)

Then you can test if it works..

import cv2  # Imports without problems...

I think for osx the cv2.cpython-35m-darwin.so is the only one you need, but I just copied both.

Upvotes: 0

JamieS
JamieS

Reputation: 113

Found an answer - follow the instructions on this website BUT you have to change to the version of python you are using.

Also, I didn't bother with the virtual environments.

And lastly cv2.so is actually called cv2.cpython-35m-darwin.so in the build/lib folder that you make.

Then it works.

Upvotes: 2

Related Questions