我已按照本教程安装opencv:https://medium.com/@nuwanprabhath/installing-opencv-in-macos-high-sierra-for-python-3-89c79f0a246a
我有两种不同的虚拟环境设置。
在一个cv2上运行正常。 在另一个我得到:
ImportError: dlopen(/Users/me/.virtualenvs/py3cv/lib/python3.6/site-packages/cv2.so, 2): no suitable image found. Did find:
/Users/me/.virtualenvs/py3cv/lib/python3.6/site-packages/cv2.so: mach-o, but wrong architecture
/usr/local/Cellar/opencv/3.4.1_5/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so: mach-o, but wrong architecture
工作口译员表示:
Python 3.6.4 (default, Dec 25 2017, 14:57:56)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
当我进入python时。
当我跑import ctypes;print(ctypes.sizeof(ctypes.c_void_p))
时
我得到:8
突破显示:
Python 3.6.4 (v3.6.4:d48ecebad5, Dec 18 2017, 21:07:28)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
当我运行import ctypes;print(ctypes.sizeof(ctypes.c_void_p))
时:
我得到:4
任何想法出了什么问题?
name -a
Darwin MyMBP 17.5.0 Darwin Kernel Version 17.5.0: Fri Apr 13 19:32:32 PDT 2018; root:xnu-4570.51.2~1/RELEASE_X86_64 x86_64
答案 0 :(得分:1)
对于要由可执行文件成功加载的 .so (共享对象),其架构必须匹配(在 OSX 上,这可以扩展为: .so 必须"包含"可执行文件的体系结构 - 作为 .so 可以捆绑多个体系结构。)
您安装的 OpenCV 版本是为(英特尔) 64位 构建的。这就是为什么它适用于64位 Python ,但不适用于32位的。
有关 Python 架构的更多详细信息,请查看[SO]: How do I determine if my python shell is executing in 32bit or 64bit mode on OS X? (@CristiFati's answer)。