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吗?怎么做?
答案 0 :(得分:0)
实际上我通过安装另一个版本的libpng(libpng15)解决了这个问题,这似乎是当前opencv版本(2.4.9)所需要的。
答案 1 :(得分:0)
您应该针对新的libpng重新编译OpenCV,因为它会更改其ABI版本(更改了dylib名称)。如果您通过自制软件安装了这个,我会说它的包中存在问题(除非这种升级需要手动干预,即根据新库版本重新编译依赖二进制文件)。