繁体   English   中英

OpenCV库依赖libpng版本

[英]OpenCV library dependency libpng version

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吗? 怎么做?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM