个人博客:http://www.chenjianqu.com/

原文链接:http://www.chenjianqu.com/show-79.html

最近重新开始使用opencv-cpp,有些项目需要的是OpenCV2,有些需要多是OpenCV3,这两个版本的如何共存是个值得研究多问题。这里记录一次OpenCV3和2的安装过程。

安装OpenCV3

1.源码下载

我这里使用的是OpenCV3.4.1,再github可以下载其源代码:https://github.com/opencv/opencv/tags?after=4.0.0-beta。

2.依赖安装

我使用的是opencv3.4.1,需要安装以下依赖.

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

3.编译安装

解压下载的opencv源代码包,并在终端进入该目录,然后新建build文件夹。

(base) chenjianqu@chen:~/software/opencv-3.4.1$ mkdir build
(base) chenjianqu@chen:~/software/opencv-3.4.1$ cd build

接着就可以直接编译安装了。

cmake -D BUILD_TIFF=ON -D ENABLE_PRECOMPILED_HEADERS=OFF ..
make -j8  #开启8个线程
sudo make install

让系统能找到opencv库路径

sudo gedit /etc/ld.so.conf.d/opencv.conf   # 末尾添加/usr/local/lib
sudo ldconfig  # 使得上面的配置路径生效

配置bash

sudo gedit /etc/bash.bashrc

#末尾添加下面两行

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

export PKG_CONFIG_PATH

source /etc/bash.bashrc # 保存,执行如下命令使得配置生效
sudo updatedb # 更新

4.测试

使用KDevelop4测试OpenCV的效果。

CMakeLists.txt

cmake_minimum_required(VERSION 2.6)
project(imagebinoculartest)# 添加c++ 11标准支持
set( CMAKE_CXX_FLAGS "-std=c++11" )find_package( OpenCV 3 REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )add_executable(imagebinoculartest main.cpp)
target_link_libraries(imagebinoculartest ${OpenCV_LIBS})install(TARGETS imagebinoculartest RUNTIME DESTINATION bin)

main.cpp

#include <iostream>
#include <chrono>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>using namespace std;
using namespace cv;
int main ( int argc, char** argv )
{cout << "OpenCV version : " << CV_VERSION << endl;Mat leftImg=imread("left.png",0);Mat rightImg=imread("right.png",0);imshow ( "leftImg", leftImg);imshow ( "rightImg", rightImg);waitKey ( 0 );destroyAllWindows();return 0;
}

安装OpenCV2

1.源码下载

我这里使用的是OpenCV2.4.8,再github可以下载其源代码:https://github.com/opencv/opencv/tags?after=3.0.0-alpha。

2.依赖安装

需要安装以下依赖.

sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev

3.编译安装

跟OpenCV3一样,解压源代码,新建build目录,在build目录下编译安装。设置安装目录为/usr/local/opencv248。

sudo mkdir -p /usr/local/opencv248
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv248 -D WITH_CUDA=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF..

因为我这里安装了CUDA9.0,不支持OpenCV2.4,因此我这里把CUDA编译选项关掉了。然而CMake的时候,还是报错了:

报错1:

CMake Error at cmake/OpenCVDetectCXXCompiler.cmake:85 (list):list GET given empty list
Call Stack (most recent call first):CMakeLists.txt:77 (include)

    解决办法:参照https://blog.csdn.net/u010003609/article/details/100086911

接下来进行make:

make -j4

进行到92%的时候,又出错了。

报错2:

[ 92%] Building CXX object modules/contrib/CMakeFiles/opencv_contrib.dir/src/retinacolor.cpp.o
/home/chen/lib/opencv-2.4.8.3/modules/contrib/src/chamfermatching.cpp: In member function ‘void cv::ChamferMatcher::Matching::computeDistanceTransform(cv::Mat&, cv::Mat&, cv::Mat&, float, float, float)’:
/home/chen/lib/opencv-2.4.8.3/modules/contrib/src/chamfermatching.cpp:969:30: error: the compiler can assume that the address of ‘annotate_img’ will never be NULL [-Werror=address]if (&annotate_img!=NULL) {^
/home/chen/lib/opencv-2.4.8.3/modules/contrib/src/chamfermatching.cpp:1016:34: error: the compiler can assume that the address of ‘annotate_img’ will never be NULL [-Werror=address]if (&annotate_img!=NULL) {^
/home/chen/lib/opencv-2.4.8.3/modules/contrib/src/chamfermatching.cpp: In member function ‘cv::ChamferMatcher::Match* cv::ChamferMatcher::Matching::localChamferDistance(cv::Point, cv::Mat&, cv::Mat&, cv::ChamferMatcher::Template*, float)’:
/home/chen/lib/opencv-2.4.8.3/modules/contrib/src/chamfermatching.cpp:1111:25: error: the compiler can assume that the address of ‘orientation_img’ will never be NULL [-Werror=address]

    解决办法:参照https://blog.csdn.net/Qin605/article/details/86621313

4.测试

此时已经安装了两个版本的OpenCV,但是系统默认的是OpenCV3,可以通过如下命令查看OpenCV的版本:

pkg-config --modversion opencv

可以通过再~/.bashrc里设置环境变量来更改默认的OpenCV为OpenCV2:

sudo gedit ~/.bashrc

在该文件末尾添加路径:

export PKG_CONFIG_PATH=/usr/local/opencv249/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv249/lib

然后更新bash:

sudo source ~/.bashrc

此时再使用pkg-config --modversion opencv来查看版本就能发现已经更改为OpenCV2.4.8了。

这里使用程序进行测试。程序和上面的OpenCV3一样,但是CMakeLists.txt需要进行配置:

CMakeLists.txt

cmake_minimum_required(VERSION 2.6)
project(imagebinoculartest)set( CMAKE_CXX_FLAGS "-std=c++11" )set(OpenCV_DIR /usr/local/opencv248/share/OpenCV)
find_package(OpenCV 2.4 REQUIRED)
include_directories(SYSTEM ${OpenCV_INCLUDE_DIRS} /usr/local/opencv248/include)add_executable(imagebinoculartest main.cpp)
target_link_libraries(imagebinoculartest ${OpenCV_LIBS})install(TARGETS imagebinoculartest RUNTIME DESTINATION bin)

这样就能使用OpenCV2了。

参考文献

[0]ykwjt.ubuntu16.04上的OpenCV多版本共存.2019-05-15

OpenCV2和OpenCV3兼容安装相关推荐

  1. python卸载opencv包_Ubuntu16.04卸载opencv2.4.9并安装opencv3.2.0+contrib

    本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 需要用到opencv中的surf和sift算法,机器上只有opencv3.2,没有扩展包,于是 ...

  2. 关于Ubuntu同时安装opencv2和opencv3

    我用的是ubuntu14.04,之前已经安装了OpenCV2(默认的安装路径是/usr/local),现在需要安装OpenCV3.2,但是又不想将opencv2删除,怎么办???对,在别的地方安装. ...

  3. 配置OpenCV2和OpenCV3开发环境笔记

    配置OpenCV2和OpenCV3开发环境笔记 Date: 2016-01-19 Author: Kagula Environment: Visual Studio 2013 Update5, Ope ...

  4. [zt]OpenCV2.1.0的安装

    下载和安装 OpenCV 2.1.0 2.添加库文件:打开VS 2008,选择菜单:Tools->options->Projects and Solutions >VC++ Dire ...

  5. opencv | cv2|OpenCV3.3安装Make sure that you use the correct version of ‘pip‘ installed for your Pytho

    opencv | cv2|OpenCV3.3安装,pip安装失败时使用命令python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simp ...

  6. 关于keil c51和mdk兼容安装后代码提示功能不见了的解决方法

    关于keil c51和mdk兼容安装后代码提示功能不见了的解决方法 解决方法就是: 升级MDK版本..... 本人将KEIL C51和MDK 5(版本5.14)兼容安装,既可以编写51程序又可以编写3 ...

  7. Win10系统VS2015上配置YOLOv3运行训练环境(包含OpenCv3.40安装配置,cuda9.2安装配置)

      前言 第一次写博客,迟迟不敢下笔,只怕在言语之间有所纰漏.在下区区学生一枚,在此斗胆写下在win10上搭建yolo_v3环境的过程与感受.博文部分安装配置过程将会引用其他博文,如有侵权,通知立删. ...

  8. opencv3 ubuntu安装脚本

    3.0安装脚本下载地址: https://github.com/cmayet/docker_python2.7_opencv3.0.0 #!/bin/bash apt-get update apt-g ...

  9. win10+VS2013+opencv2.4.11的安装和配置

    win+VS2017+opencv3.4.1的安装配置也可以用下面的方法进行配置,只需要在配置附加依赖项进行改一下就行,下面有说明 因为自己在安装的过程中,踩过太多的坑,可以说很痛苦了,所以这里特意将 ...

最新文章

  1. 如何定位并优化慢查询Sql
  2. 四分之一常用的非抗菌药物,居然也会抑制人体肠道菌群?
  3. 使用域用户权限|安装软件
  4. 编译原理三大经典书籍(龙书 虎书 鲸书)
  5. 时间日期类JAVA包含地区属性_Java常用类 | 时间和日期类
  6. python报错 TypeError: string indices must be integers
  7. 不同网段通过静态路由实现互通(强烈推荐)
  8. 当众讲话第二章当众讲话的基本原则
  9. Percona-XtraDB-Cluster 5.7版本(PXC)集群部署
  10. 05-02 docker 安装与配置-CentOS
  11. 使用GDB进行系统调用过程简析
  12. xp精简版 安装IIS
  13. IBM智慧商务 - IBM和SugarCRM携手提供全方位渠道客户体验
  14. 使用安装Ubuntu和Win7双系统
  15. 嵌入式车牌识别与称重系统
  16. 淘宝客微信机器人接口API开发
  17. 干货!我开发 Android 是如何界面设计的
  18. 单片机消抖c语言程序,基于单片机定时器软件消抖C51程序研究
  19. 内网安全,站在十年的路口
  20. PG的timestamp

热门文章

  1. php中递归怎么用,PHP中递归的实现实例详解
  2. luogu P1858 多人背包
  3. 树莓派学习之路-GPIO Zero
  4. node平台的安装与搭建
  5. 20155207王雪纯 《Java程序设计》实验一报告
  6. 数据压缩之经典——哈夫曼编码(Huffman)
  7. 【转】PHP会话Session使用详解
  8. CVPR 2020 中的群组活动识别
  9. CV Code | 本周新出计算机视觉开源代码汇总(含图像修复、目标检测、医学图像分割、度量学习等)...
  10. Python项目实战:带领你爬取sexy的福利图片