opencv2.4.9:为caffe编译精简的opencv_core,opencv_imgproc,opencv_highgui全静态库

编译caffe时用到了opencv,其实caffe只用到OpenCV很小一部功能 ,具体就是opencv_core,opencv_imgproc,opencv_highgui三个库,用于图像读写,如果能将这个三个库全静态编译,就能让caffe在运行时不再依赖opencv。
但是opencv_highgui库在读写jpeg,png,tiff,jpeg2000图像格式时用到了第三方编解码库,默认编译opencv时opencv_highgui是动态连接系统中的图像编解码库(如/usr/lib/libpng用于tiff…),既然要做静态库,当然要把这些解码库也静态编译进来,怎么办呢?
其实opencv源码中3rdparty文件夹下本就包含了这些图像解码库,只要在cmake生成Makefile脚本时指定编译这些库就好了。

下面全静态编译opencv_core,opencv_imgproc,opencv_highgui三个库的cmake配置命令,
#后面是注释部分,使用时请删除

# $install_path用于指定安装位置
# -DBZIP2_LIBRARIES定义bzip2库的位置
cmake . -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=$install_path \
	-DBZIP2_LIBRARIES=$BZIP2_INSTALL_PATH/lib/libbz2.a \
	-DBUILD_DOCS=off \
	-DBUILD_SHARED_LIBS=off \    # 指定编译静态库,默认编译动态库(.so,.dll)
	-DBUILD_FAT_JAVA_LIB=off \
	-DBUILD_TESTS=off \
	-DBUILD_TIFF=on \            # 编译3rdparty/libtiff项目
	-DBUILD_JASPER=on \          # 编译3rdparty/libjasper项目用于jpeg2000图像编解码
	-DBUILD_JPEG=on \            # 编译3rdparty/libjpeg项目用于jpeg图像编解码
	-DBUILD_OPENEXR=on \         # 编译3rdparty/openexr项目
	-DBUILD_PNG=on \             # 编译3rdparty/libpng项目用于png图像编解码
	-DBUILD_TIFF=on \            # 编译3rdparty/libtiff项目用于tiff图像编解码
	-DBUILD_ZLIB=on \            # 编译3rdparty/zlib项目
	-DBUILD_opencv_apps=off \    # 以下BUILD_opencv_XXXX选项用于选择或反选指定的opencv模块
	-DBUILD_opencv_calib3d=off \
	-DBUILD_opencv_contrib=off \
	-DBUILD_opencv_features2d=off \
	-DBUILD_opencv_flann=off \
	-DBUILD_opencv_gpu=off \
	-DBUILD_opencv_java=off \
	-DBUILD_opencv_legacy=off \
	-DBUILD_opencv_ml=off \
	-DBUILD_opencv_nonfree=off \
	-DBUILD_opencv_objdetect=off \
	-DBUILD_opencv_ocl=off \
	-DBUILD_opencv_photo=off \
	-DBUILD_opencv_python=off \
	-DBUILD_opencv_stitching=off \
	-DBUILD_opencv_superres=off \
	-DBUILD_opencv_ts=off \
	-DBUILD_opencv_video=off \
	-DBUILD_opencv_videostab=off \
	-DBUILD_opencv_world=off \
	-DBUILD_opencv_lengcy=off \
	-DBUILD_opencv_lengcy=off \
	-DWITH_1394=off \
	-DWITH_EIGEN=off \
	-DWITH_FFMPEG=off \
	-DWITH_GIGEAPI=off \
	-DWITH_GSTREAMER=off \
	-DWITH_GTK=off \
	-DWITH_PVAPI=off \
	-DWITH_V4L=off \
	-DWITH_LIBV4L=off \
	-DWITH_CUDA=off \
	-DWITH_CUFFT=off \
	-DWITH_OPENCL=off \
	-DWITH_OPENCLAMDBLAS=off \
	-DWITH_OPENCLAMDFFT=off
# 开始编译opencv,并安装到指定位置,
# -j 8 指定8线程并行编译
make -j 8 install

使用这个版本的opencv编译出的caffe,用ldd命令查看,可以看出已经没有对opencv的任何依赖了,如下图:
这里写图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

10km

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值