4

このドキュメントからCMakeを使用してOpenCVをインストールしました。私の〜/ .profileファイルは:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
export ARCHFLAGS="-arch i386 -arch x86_64"
export ARCHFLAGS="-arch i386" 
export VERSIONER_PYTHON_PREFER_64_BIT=yes
export VERSIONER_PYTHON_PREFER_32_BIT=no
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export PYTHONPATH=/Library/Python/2.6/site-packages:$PYTHONPATH    
export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib

私はこのimport cvエラーがあります:

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

私のPythonアーキテクチャ:

file "$( "$(which python)" -c "import sys;print(sys.executable)" )"
/usr/bin/python: Mach-O universal binary with 3 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
/usr/bin/python (for architecture ppc7400): Mach-O executable ppc

私はStackoverflowでOpenCVとLeopardに関するすべての回答を読んで実行しましたが、それでもエラーを上回っています。これについての助けをいただければ幸いです。

前もって感謝します

4

1 に答える 1

4

Leopard (および Snow Leopard) は雑種であり、32 ビットと 64 ビットの両方のバイナリが含まれています...そしてそれらを混同します...そして悪夢です。私の知る限り、実行中の同じプログラムで 32 ビット ライブラリと 64 ビット ライブラリを混在させることはできません。

私はこのハックを使用しました: How to force /usr/bin/gcc -> /usr/bin/gcc -m32?

これにより、すべてが i386 (32 ビット行進) でコンパイルされます。強制的に 64 にすることもできます (非推奨)。他の多くのコンパイルの問題も修正されます。これはハックであることを忘れないでください。

/usr/bin/ をバックアップし、ハックを行い、open cv をコンパイルして、ハックを削除します。

他の解決策は、(今のところ) 32/64 ビットの問題がないように見える lion にアップグレードすることです。

役立つコマンドは次のとおりです。

lipo -info /usr/local/lib/python2.6/site-packages/cv2.so
arch -i386 /usr/bin/python

Lipo は共有オブジェクトのアーキテクチャをチェックし、後者はHow do I force Python to be 32-bit on Snow Leopard およびその他の 32 ビット/64 ビットの質問. おそらく、Pythonをcv2と同じアーキテクチャに強制することでこれを修正できます...

編集

macport cv2 と apple python を使用していることに気付きました。/opt/local/bin/python2.6コードを実行するときに試してください。

于 2012-05-21T09:53:03.003 に答える