python 3.5的Python OpenCV导入错误
Posted
技术标签:
【中文标题】python 3.5的Python OpenCV导入错误【英文标题】:Python OpenCV import error with python 3.5 【发布时间】: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 【参考方案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 是您唯一需要的,但我只是复制了两个。
【讨论】:
以上是关于python 3.5的Python OpenCV导入错误的主要内容,如果未能解决你的问题,请参考以下文章
python 在Python 3.5上的Mac OS Sierra上安装OpenCV
无法使用 python 3.5 安装 opencv 3.1,仅适用于 2.7
ubuntu 16.04 安装 opencv +contrib (3.2.0) + python 3.5
Python 3.5、OpenCV 3.2、Windows 7 64 位、Anaconda 3、“ImportError:DLL 加载失败”