Python 无法导入 OpenCV,因为找不到 libjpeg.8.dylib

10 投票
4 回答
10195 浏览
提问于 2025-04-18 16:25

我在Mac OSX - Mavericks上尝试让opencv在python中工作,但在导入cv时总是出现找不到libjpeg.8.dylib的错误。

(我最近从Mountain Lion更新过来)

这是我做的步骤:

1.brew tap homebrew/science (添加一个软件源)

2.brew install opencv (安装opencv)

3.python (打开python环境)

4.import cv (尝试导入opencv)

-结果出现了以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/opencv/2.4.9/lib/python2.7/site-packages/cv.py", line 1, in <module>
    from cv2.cv import *
ImportError: dlopen(/usr/local/Cellar/opencv/2.4.9/lib/python2.7/site-packages/cv2.so, 2): Library not loaded: /usr/local/lib/libjpeg.8.dylib
  Referenced from: /usr/local/Cellar/opencv/2.4.9/lib/libopencv_highgui.2.4.dylib
  Reason: image not found

  1. 我找到了libjpeg.8.dylib,位置在/usr/local/Cellar/jpeg/8d/lib/,但显然这个位置不是libopencv_highgui.2.4.dylib要找的地方。

我对Mac OS和homebrew还不太熟悉。有人能解释一下怎么解决这个错误,让opencv正常运行吗?我有Mac自带的python,还有通过homebrew安装的python。

谢谢。

4 个回答

0

我在macOS上也遇到了类似的问题,使用的是Pillow这个库。这里有一个提议的解决方案,是从源代码安装,这个方法对我有效。我需要把它安装到/usr/local/目录下,这样Pillow才能找到它。你还需要一些命令行工具,这就是第一行的目的:

xcode-select --install
curl -O -J -L http://www.ijg.org/files/jpegsrc.v8.tar.gz
tar xvfz jpeg*tar.gz                 # Unzip and untar what you downloaded
cd jpeg-8                            # Change directory to wherever it unpacked to
./configure --prefix="/usr/local"    # Configure with the necessary prefix
make
sudo make install
3

我之前也遇到过类似的问题(在Python中,import opencv 有一天能正常工作,第二天却出现了你说的那个错误),我找到的这个解决办法对我有效:

升级你的Homebrew中的opencv,比如:

brew upgrade opencv(或者在我的情况下是 brew upgrade opencv3

希望这能帮到你

6

我在我的Mac上用brew安装OpenCV的时候,遇到了同样的问题,不过那是发生在一个Xcode的C++控制台应用程序上。

不过,有一种解决这个问题的替代方法,就是把文件用cp命令复制到库的位置。

cp /usr/local/Cellar/jpeg/8d/lib/libjpeg.8.dylib /usr/local/lib/libjpeg.8.dylib

还有一种方法,我不太建议使用,就是用mv命令把整个文件位置移动到你的/usr/local/lib/目录下。

mv /usr/local/Cellar/jpeg/8d/lib/libjpeg.8.dylib /usr/local/lib/
14

这个问题的简单解决办法是,在 /usr/local/lib 文件夹里创建一个指向 libjpeg.8.dylib 实际位置的符号链接,像这样:


$ sudo ln -s /usr/local/Cellar/jpeg/8d/lib/libjpeg.8.dylib /usr/local/lib/libjpeg.8.dylib

问题在于,opencv 和 python 需要 libjpeg.8.dylib 在 /usr/local/lib/ 这个地方,但 homebrew 安装它却放在了 /usr/local/Cellar/,所以就出现了让人烦恼的错误。

撰写回答