python无法导入opencv,因为它无法找到libjpeg.8.dylib

时间:2014-08-07 16:34:37

标签: python macos opencv jpeg

尝试在Mac OSX上运行forc的opencv - Mavericks但是在从python导入cv时仍然没有找到libjpeg.8.dylib的图像

(最近从Mountain Lion更新)

这就是我所做的:

  • brew tap homebrew / science

    1. brew install opencv
    2. - 一切都很好

      1.   
            

          
      2.   
            

        import cv

          

- 发现以下错误:

追踪(最近一次通话):   文件"",第1行,in   文件" /usr/local/Cellar/opencv/2.4.9/lib/python2.7/site-packages/cv.py" ;,第1行,in     来自cv2.cv import * ImportError:dlopen(/usr/local/Cellar/opencv/2.4.9/lib/python2.7/site-packages/cv2.so,2):未加载库:/usr/local/lib/libjpeg.8.dylib   参考自:/usr/local/Cellar/opencv/2.4.9/lib/libopencv_highgui.2.4.dylib

原因:未找到图像

  1. 我找了libjpeg.8.dylib并在/ usr / local / Cellar / jpeg / 8d / lib /中找到了它,显然,这不是libopencv_highgui.2.4.dylib所在的地方。
  2. 我对Mac OS和自制软件有点新鲜。任何人都可以解释如何解决此错误并使opencv运行。我有预装了Mac的python和他们自己安装的python。

    谢谢。

4 个答案:

答案 0 :(得分: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 /中,因此很烦人。

答案 1 :(得分:6)

我使用brew a在我的mac上安装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/

答案 2 :(得分:3)

刚刚遇到了类似的问题(在python import opencv中有一天为我工作,然后下一次它抛出了你报告的相同错误)这个解决方案对我有用:

升级您的自制软件opencv例如:

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

希望这有帮助

答案 3 :(得分:0)

我在macOS上的Pillow库遇到了类似的问题。 The solution proposed here从源代码安装它为我工作。我必须将它安装到/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