如何使用MacPorts安装Python 2.7绑定到OpenCV?

12
当我尝试在Python中导入"cv"时,我收到了错误消息:"ImportError: No module named cv"。虽然这个问题已经有很多形式出现过,但我还没有找到有用的答案。
在我的Mac OS X Lion系统上,除了许多其他端口之外,我还运行了:
sudo port install python27

sudo port install opencv +python27

运行中:

port select python

我看到了:"python27(活动状态)"

并且正在运行:

port installed opencv

我看到了这个: "opencv @2.3.1a_1+python27 (active)"

还有什么其他的需要检查吗?谢谢。


1
我应该在这个路径下查找cv.so吗:/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/?但是它不在那里... - jensph
3个回答

20

我曾经遇到过同样的问题。看起来这可能是 OpenCV 2.3.1a 的安装脚本中存在的一个 bug。如果 NumPy 没有安装,它将不会创建 Python 绑定。

解决方法:

sudo port uninstall opencv
sudo port install py27-numpy
sudo port install opencv +python27

对我有用!我通过Google找到了正确的答案: wbarczynski.org/wp/2011/11/25/opencv-with-py-bindings-on-mac-with-macports-intall-numpy-first/。


1
非常感谢,这个方法很有效!具体来说,我运行了以下命令:sudo port uninstall opencv @2.3.1a_1+python27 sudo port uninstall opencv @2.3.1a_1 sudo port install py27-numpy sudo port install opencv +python27 - jensph
我随后能够在Python中运行import cv - jensph
2
我执行了端口安装 py27-numpy。 - user391339
1
这对我也起作用了。对我来说,在此之前我使用了macports和pip安装numpy。所以可能会导致问题。因此,我使用pip卸载了numpy。然后按照建议做了,一切都正常了。谢谢。 - pyan
有意思。@pyan,这对我也有用:(1)使用pip安装numpy和cv2,(2)使用Python 2.7绑定安装opencv3.1。我不必用MacPorts替换基于pip的numpy。 - Eric Platon

2
第一步: 使用Macports安装opencv。
第二步: 将这两个文件放在您的PYTHONPATH某个位置(例如在您的site-packages中)。 第三步:
创建下面的软链接(因为cv2.so期望dylibs在/usr/local中,但MacPorts安装在/opt/local):
cd /usr/local/lib/
ln -s /opt/local/lib/libopencv_core.2.3.dylib libopencv_core.2.3.dylib
ln -s /opt/local/lib/libopencv_flann.2.3.dylib libopencv_flann.2.3.dylib
ln -s /opt/local/lib/libopencv_imgproc.2.3.dylib libopencv_imgproc.2.3.dylib
ln -s /opt/local/lib/libopencv_video.2.3.dylib libopencv_video.2.3.dylib
ln -s /opt/local/lib/libopencv_ml.2.3.dylib libopencv_ml.2.3.dylib
ln -s /opt/local/lib/libopencv_features2d.2.3.dylib libopencv_features2d.2.3.dylib
ln -s /opt/local/lib/libopencv_highgui.2.3.dylib libopencv_highgui.2.3.dylib
ln -s /opt/local/lib/libopencv_calib3d.2.3.dylib libopencv_calib3d.2.3.dylib
ln -s /opt/local/lib/libopencv_objdetect.2.3.dylib libopencv_objdetect.2.3.dylib
ln -s /opt/local/lib/libopencv_legacy.2.3.dylib libopencv_legacy.2.3.dylib
ln -s /opt/local/lib/libopencv_contrib.2.3.dylib libopencv_contrib.2.3.dylib

我不需要执行第二步和第三步就能使Python绑定正常工作。谢谢。 - jensph
1
嗯,我想知道为什么我的环境需要那个。肯定是之前安装了某些冲突的程序。 - AlcubierreDrive
我按照您上面的建议操作,现在没有出现 ImportError 的错误。但是很遗憾,opencv 模块仍然失败了(进程以退出代码 139 结束)。 - user391339
我试过了: 尝试导入cv2模块 除非出现ImportError异常,否则程序不会退出。 如果成功导入,输出“看起来它已经安装成功”并退出。但是,程序在执行时崩溃,并显示139错误,没有任何输出。 - user391339

-2

我在想是否你已经安装了opencv到OSX版本的Python,而不是使用MacPorts。

你尝试过easy_install吗?我通常使用easy_install来安装包。

/opt/local/bin/easy_install-2.7 opencv

我在 /opt/local/lib 中看到了所有 libopencv_*.dylib 文件,我相信这就是 MacPorts 安装它们的地方。使用您的建议进行安装会覆盖或与 MacPorts 安装冲突吗?并且 easy_install 会包括 Python 绑定吗?谢谢。 - jensph
这取决于你,选择使用哪个Python版本。我使用MacPorts安装。关于Python绑定方面,在我上述提到的安装之后,我没有遇到任何使用任何软件包的问题。 - add-semi-colons
我到目前为止只使用过MacPorts。我尝试了sudo /opt/local/bin/easy_install-2.7 opencv但是出现了错误:Searching for opencv Reading http://pypi.python.org/simple/opencv/ Couldn't find index page for 'opencv' (maybe misspelled?) Scanning index of all packages (this may take a while) Reading http://pypi.python.org/simple/ No local packages or download links found for opencv error: Could not find suitable distribution for Requirement.parse('opencv') - jensph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接