Reputation: 113
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
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
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
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