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的任何依赖了,如下图:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Youngxj

emlog每日一键打卡(踩/赞三合一)插件1.2

1745
来自专栏小白课代表

犀牛Rhino6.1安装教程

1233
来自专栏北京马哥教育

撤回的微信消息真的看不到?78行Python代码帮你看穿一切!

导读:Python曾经对我说:"时日不多,赶紧用Python"。于是看到了一个基于python的微信开源库:itchat,玩了一天,做了一个程序,把私聊撤回的信...

940
来自专栏乐沙弥的世界

mongo shell连接到mongoDB及shell提示符下执行js脚本

632
来自专栏胡家威的专栏

Android 端相机相关开发经验总结

文主要说的是自己在做相机模块需求或者说使用 cameraview的过程中遇到了哪些问题以及相应的解决方案,最终我对 cameraview 进行了一番 enhan...

1.2K2
来自专栏非著名程序员

拥有可移动头像的折叠Android工具栏:CollapsingAvatarToolbar

这个小库演示了如何将可折叠工具栏添加到您的应用程序中,并带有可移动和扩展的头像,类似于在Telegram Android应用中所看到的。 1、Collapsin...

2106
来自专栏流媒体

Linux下ndk编译移植FFmpeg到Android平台简介

这里我们选择3.2.4版本(注意:这里使用的3.2.4版本,如果用最新的版本,编译可能出现问题,为了想让大家上手,建议版本先保持一致)。直接github上选择下...

922
来自专栏PHP技术

重磅资料!Github上的PHP资源汇总大全

依赖管理 ——用于依赖管理的包和框架 Composer/Packagist : 一个包和依赖管理器 Composer Installers: 一个多框架Com...

2884
来自专栏FreeBuf

手工检测Web应用指纹的一些技巧

0x01 Web 应用技术概览 1.1 架构 大多数 web 应用可以粗略划分为三个组件(component)。 1、客户端, 大多数情况下是浏览器。 2、服务...

4186
来自专栏Android干货园

Reading:一款不错的Material Desgin风格的Kotlin版本的开源APP

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/81...

623

扫码关注云+社区