2

我正在将在 windows 上开发的 python+opencv 应用程序移植到 mac。

在 Windows 上,我的 virtualenv 站点包中有 cv2.pyd,它运行良好。

我是 mac 新手,我不明白它应该可以工作。我没有找到任何用于 opencv python 绑定的二进制文件,似乎正确的方法是使用 macport。

macport 正在复制 opts/.../site-packages 中的 cv.py 和 cv2.so。

此时如何使用呢?

我尝试手动复制这两个文件,但出现错误

>>> import cv
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/cv.py", line 1, in <module>
    from cv2.cv import *
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/cv2.so, 2): no suitable image found.  Did find:
        /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/cv2.so: mach-o, but wrong architecture

怎么了?

更新:正如@Vortexfive 所问:

$ file /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/cv2.so
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/cv2.so: Mach-O 64-bit dynamically linked shared library x86_64

$ file /Library/Frameworks/Python.framework/Versions/2.6/bin/python
/Library/Frameworks/Python.framework/Versions/2.6/bin/python: Mach-O universal binary with 2 architectures
/Library/Frameworks/Python.framework/Versions/2.6/bin/python (for architecture ppc):    Mach-O executable ppc
/Library/Frameworks/Python.framework/Versions/2.6/bin/python (for architecture i386):   Mach-O executable i386

似乎有一个不匹配。如何解决?

4

2 回答 2

1

目标架构似乎不匹配。您可以尝试使用 +universal 变体在 macports 中安装 opencv。

另一种选择是更新您的 Python 版本。我相信也为 x86_64 编译了较新的版本。

作为第三种选择,您可以在 macports 中安装带有 +python27 的 opencv。然后,您可以通过执行来选择 Python 的 macports 版本sudo port select python27

于 2012-10-26T12:15:01.977 回答
1

就我而言,拱门匹配:

$ file ../../release.mac/lib/cv2.so 
../../release.mac/lib/cv2.so: Mach-O 64-bit dynamically linked shared library x86_64
$ file `which python`
/usr/bin/python: Mach-O universal binary with 2 architectures
/usr/bin/python (for architecture x86_64):  Mach-O 64-bit executable x86_64
/usr/bin/python (for architecture i386):    Mach-O executable i386

但不知道 python 在 32 位模式下运行:

$ defaults read com.apple.versioner.python Prefer-32-Bit
1

修复者:

$ VERSIONER_PYTHON_PREFER_32_BIT=0 python

或者

$ defaults write com.apple.versioner.python Prefer-32-Bit -bool no
于 2013-07-21T01:53:46.097 回答