2012-10-26 54 views
2

我正在移植一個在Windows上開發的python + opencv應用程序到mac。如何在macos上使用opencv與python

在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 

似乎存在不匹配。如何解決它?

+1

你可以給'file /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/cv2.so'和'file'python''的輸出。這聽起來像是目標體系結構(i386,x86_64)的不匹配。 – Vortexfive

+0

謝謝。看起來有一個不匹配。查看我的更新 – luc

回答

1

看來目標體系結構中存在不匹配。您可以嘗試使用+通用變體在macports中安裝opencv。

另一種選擇是更新您的Python版本。我相信也會爲x86_64編譯更新的版本。

作爲第三種替代方案,您可以在macports中使用+ python27安裝opencv。然後,您可以通過執行sudo port select python27來選擇Python的macports版本。

+0

用+ python27 + universal重新安裝修復了問題 – luc

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 

但不知道在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