专栏首页Yunfeng's Simple BlogLinux下使用自定义路径来运行OpenCV

Linux下使用自定义路径来运行OpenCV

有的时候系统安装的OpenCV版本和你需要的版本不一样,而你又没有权限或者为了兼容不能修改系统的OpenCV,这个时候你就得自己编译OpenCV,然后在需要的代码里面引用你编译的版本。整个过程不复杂,但是之前一直没搞清楚,最近经师弟点拨才明白,这里记录一下。 我之前写过一篇在Linux下编译OpenCV的博客,大家可以参考下,我这里只记录与其中不同的部分。

修改CMAKE_INSTALL_PREFIX

默认的CMAKE_INSTALL_PREFIX/usr/local,而我们不想安装到这里,所以这里修改其为你想要保存的目录,如/home/username/local:

cmake -D CMAKE_INSTALL_PREFIX=/home/username/local ..

另外一个小问题,如果你在cmake的时候出现下面信息:

ICV: Downloading ippicv_linux_20151201.tgz...
CMake Error at 3rdparty/ippicv/downloader.cmake:73 (file):
  file DOWNLOAD HASH mismatch

    for file: [/home/pauka/opencv/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ippicv_linux_20151201.tgz]
      expected hash: [808b791a6eac9ed78d32a7666804320e]
        actual hash: [f166287239920c4a16e6f8870e15ef79]

即ippicv这个包下载不了,你可以在cmake里面加-D WITH_IPP=OFF来禁用这个包,也可以手动下载,下载方式见这里

cmake完后,继续执行makemake install。注意这里make install前面不需要sudo,因为我们不修改系统目录,不需要管理员权限。

修改lib和include,增加OpenCV的目录

为了在编译的时候找到我们的OpenCV,需要修改lib和include路径,把OpenCV的目录加到里面去。例如编译Caffe的时候,修改INCLUDE_DIRSLIBRARY_DIRS,将OpenCV的目录加进去。加入我们的OpenCV的编译后存放路径是/home/username/local/,那么对应的lib和include目录应该是/home/username/local/lib/home/username/local/include

修改PKG_CONFIG_PATH环境变量

这个环境变量是给pkg-config这个工具增加额外的查找目录的,pkg-config会默认查找/usr/lib/pkgconfig/usr/share/pkgconfig下的.pc配置文件,额外的目录通过设置PKG_CONFIG_PATH来增加。我们这里将自己的OpenCV放进去,即可:

export PKG_CONFIG_PATH=/home/username/local:$PKG_CONFIG_PATH

检查设置是否正确

如何验证编译别的库的时候找到的是我们编译的OpenCV而不是系统的呢?可以通过pkg-config命令来确定:

pkg-config --modversion opencv

如果版本是你编译的版本,那就说明找到了,可以正常用了。

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 本体技术视点 | 想用Wasm开发dApp?你不得不读的入门教程(2)

    Ontology Wasm 一直以来都受到了社区开发人员的广泛关注,而目前 Ontology Wasm 也即将上线本体主网。在上期的技术视点中,我们简要介绍了如...

    本体Ontology
  • Node.js项目TypeScript改造指南

    如果你有一个 Node.js 项目,并想使用 TypeScript 进行改造,那本文对你或许会有帮助。

    coder_koala
  • 十分钟搞懂Java效率工具Lombok使用与原理

    Lombok是一款好用顺手的工具,就像Google Guava一样,在此予以强烈推荐,每一个Java工程师都应该使用它。Lombok是一种Java™实用工具,可...

    java思维导图
  • 自定义ClassLoader的实现

    ClassLoader 是 JVM 结构中很重要的一块,也可以说是整个 JVM 运行机制的入口,程序通过 ClassLoader 将编译好的字节码文件加载到内存...

    南风
  • 本体技术视点 | 想用Wasm开发dApp?你不得不读的入门教程(1)

    Ontology Wasm 自从上线测试网以来,得到了社区开发人员的极大关注。同时,Ontology Wasm 也即将上线主网。我们知道,Ontology Wa...

    本体Ontology
  • 从零搭建一个 webpack 脚手架工具(一)

    webpack 是一个现代 JavaScript 应用程序的静态模块打包器,已经成为前端开发不可获取的工具。特别是在开发大型项目时,项目太大,文件过多导致难以维...

    多云转晴
  • Android开发:使用Android Studio打包APK文件的步骤

    Android开发过程中,使用谷歌的集成开发工具Android Studio进行Android项目的apk打包操作是必备技能,对于Android开发工程师来说是...

    三掌柜
  • 技术漫谈 | 容器化开发及两步法快速构建Docker 镜像

    作为移动互联新时代的程序员,经常会把程序装进容器内运行,但是慢悠悠的镜像构建过程、国际网络的不稳定、移动联网时的流量狂奔,都让人又爱又恨。本文介绍的两步快速构建...

    CNCF
  • SpringBoot 2.0 开发案例之百倍级减肥瘦身之旅

    为了存我的小黄图,最近在做一款图床服务,集成了各种第三方云存储服务,目前正在内部测试阶段。项目是以Jar的形式运行在腾讯云上,不要问我为什么使用腾讯云了,因为阿...

    小柒2012
  • 本体技术视点 | 虚拟机中引用性动态语言对象模型思考

    Ontology 的 NeoVM 虚拟机新增加了 DCALL、HAS_KEY、KEYS 以及 VALUES 等几条新的指令。因此,基于 NeoVM 的引用性动态...

    本体Ontology

扫码关注云+社区

领取腾讯云代金券