【问题标题】:OpenCV library dependency libpng versionOpenCV 库依赖 libpng 版本
【发布时间】:2014-10-28 02:51:29
【问题描述】:

OpenCV 曾经在我的 Mac OS(10.9,Mavericks)上运行良好。但是在我升级依赖库libpng之后出现了一些问题。对于一个简单的程序:

#include <stdio.h>
#include <opencv2/opencv.hpp>

using namespace cv;

int main( int argc, char** argv )
{
  Mat image;
  image = imread( argv[1], 1 );

  if( argc != 2 || !image.data )
    {
      printf( "No image data \n" );
      return -1;
    }

  namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
  imshow( "Display Image", image );

  waitKey(0);

  return 0;
}

它由 CMake 顺利编译。但是当我运行它时,会弹出错误:

dyld: Library not loaded: /usr/local/opt/libpng/lib/libpng15.15.dylib
Referenced from: /usr/local/lib/libopencv_highgui.2.4.dylib Reason:
image not found 
Trace/BPT trap: 5

我检查了目录 /usr/local/opt/libpng/lib/。似乎当前版本的 libpng 是 16,因为有符号链接,例如

libpng.a          libpng16.16.dylib libpng16.dylib
libpng.dylib      libpng16.a        pkgconfig

我试过“brew upgrade opencv”,opencv是最新版本(2.4.9)。通常 opencv 应该支持 libpng16,因为它是最新的。我不知道 libpng15 和 libpng16 之间的区别。我应该卸载这个 libpng16 并安装 libpng15 吗?该怎么做?

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:

    实际上我通过安装另一个版本的 libpng (libpng15) 解决了这个问题,当前的 opencv 版本 (2.4.9) 似乎需要它。

    【讨论】:

      【解决方案2】:

      您应该针对新的 libpng 重新编译 OpenCV,因为它会更改其 ABI 版本(dylib 名称已更改)。如果你是通过自制软件安装的,我会说这是他们包中的一个问题(除非这种升级需要手动干预,即针对新的库版本重新编译依赖的二进制文件)。

      【讨论】:

        猜你喜欢
        • 2019-12-25
        • 2016-09-18
        • 2015-09-27
        • 1970-01-01
        • 2020-07-26
        • 2019-01-24
        • 2017-08-21
        • 2018-05-11
        • 1970-01-01
        相关资源
        最近更新 更多