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
有人能帮忙吗?
非常感谢
找到了答案 - 遵循this website指示,但你必须改变到Python版本所使用。
此外,我没有打扰虚拟环境。
最后cv2.so实际上被称为cv2.cpython-35m-darwin.so在您创建的build/lib文件夹中。
然后它工作。
对于将来,您也可以使用'ln -s cv2创建一个符号链接.cpython-35m-darwin.so cv2.so',这样你就可以使用'import cv2'导入它。 :-) – gglasses
嘿gglasses,我如何创建符号链接,如你所说? – Tam
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安装
你试图加载编译为一个Python的OpenCV的OpenCV的Python 2使用Python 3.5?它不会工作。我在这里记录了几个月前我如何为Python 3编译opencv3,如果它有帮助的话:https://github.com/julienpalard/grid-finder –