ubuntu16.04源码安装opencv3.1.0

源码准备

  1. 下载源码,opencv官网,得到 .zip的压缩文件(默认在~/Downloads下),
  2. 进入Downloads文件下,解压文件到用户目录下(自己随意) ,unzip opencv-3.1.0.zip -d …/

安装依赖

  1. 有一点需要说明的是,opencv有很多依赖库,根据自己需要安装,缺少依赖库会影响他的部分功能(有的可能你本来也用不到,根据自己需求,以后需要也可以再重新安装依赖),opencv会在cmake阶段检测依赖项,并调整自己功能。
  2. 安装依赖(有的是可选的,根据自己需求)
# Build tools:
sudo apt-get install -y build-essential cmake

#GUI
sudo apt-get install -y libvtk5-dev libgtk2.0-dev

# Media I/O:
sudo apt-get install -y libtiff5-dev libjasper-dev libopenexr-dev libgdal-dev zlib1g-dev libjpeg-dev libwebp-dev libpng-dev

# Video I/O:
sudo apt-get install -y libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev yasm libopencore-amrnb-dev libopencore-amrwb-dev libv4l-dev libxine2-dev


# Parallelism and linear algebra libraries:
sudo apt-get install -y libtbb-dev libeigen3-dev

#python
python-dev python-numpy

安装libtiff4-dev的时候,提示没有相应的包,但是有 libtiff5-dev代替,我就用其代替了(导致后面问题)。

编译、安装

  1. 进入opencv-3.1.0目录,执行 :
mkdir build
cd build
sudo cmake ..

如果正常会出现:检查哪些功能安装,哪些没有
在这里插入图片描述
但是我在执行cmake的时候出现:ICV: Downloading ippicv_linux_20151201.tgz 下载超时不要慌,先喝口水冷静一下,回来之后,点击ippicv_linux_20151201.tgz手动下载,下载完后替换opencv-3.1.0/3rdparty/ippicv/downloads/linux-*目录下的同名文件,重新cmake。这会我是成功的,如果还没成功,自行百度吧,谁都是这么过来的。

  1. 接着在bulid目录下执行 sudo make
  • 如果在make阶段出错,报类似错误:
usr/lib/libvtkIO.so.5.8.0: undefined reference to TIFFScanlineSize@LIBTIFF_4.0' usr/lib/libpq.so.5: undefined reference

是因为找不到 libtiff4-dev 我们在安装的过程中换成 libtiff5-dev 。所以我们手动安装

cd $HOME/Downloads
wget http://old-releases.ubuntu.com/ubuntu/pool/universe/t/tiff3/libtiff4_3.9.7-2ubuntu1_amd64.deb
sudo dpkg -i libtiff4_3.9.7-2ubuntu1_amd64.deb 
sudo ldconfig
  • 接下来再重新 sudo cmake .. 接着sudo make
    如果还没有解决刚才的问题,那可能是和你以前安装其他的依赖冲突(我也是),比如我以前安装 anaconda,所以opencv在cmake的时候,有的依赖使用anaconda里面的包,像tiff的包,用的就是anaconda的,如下图:
    在这里插入图片描述

然后我就将anaconda的环境变量删除,我当时添加的是全局,所以在/etc/profile里面,删了之后再cmake,就变成下面的了。
在这里插入图片描述

  • 再重新编译make -j5 这次启用5个线程,更快(已经折腾不起时间了)
    如果顺利的话会成功,如下图,其中可能会有警告,没关系(能安装就谢天谢地)。如果还不成功,自行百度吧。
    在这里插入图片描述
  1. 最后一步:sudo make install 恭喜你,已经完成艰巨的任务,听首歌奖励一下自己。

测试一下

main.cpp

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>


using namespace cv;
using namespace std;


int main(void)
{
	Mat image;
	image = imread("lena.jpeg");
	namedWindow("display_image");
	imshow("display_image",image);
	waitKey();
	return 0;
}

CMakeList.txt

cmake_minimum_required(VERSION 3.5)
project(my_test)
set(CMAKE_CXX_FLAGS "-std=c++11")


#如果需要版本控制,有其他opencv版本安装在/opt/opencv-2.4.11文件夹下需要加上
#set(OpenCV_DIR /opt/opencv-2.4.11/share/OpenCV)
find_package(OpenCV REQUIRED) #根据OpenCV作为前缀自动去/usr/local/share/OpenCV(如果你的opencv安装时,默认前缀设置为:/usr/local时)文件夹中去找OpenCVConfig.cmake,OpenCV-config.cmake 两个文件,进而确定你要引入的opencv头文件和库函数在哪里


include_directories(${OpenCV_INCLUDE_DIRS})
include_directories(include) #我自己头文件目录
aux_source_directory(src DIR_SRCS)#自己的源文件目录

add_executable(my_test ${DIR_SRCS})
target_link_libraries(my_test ${OpenCV_LIBS})# OpenCV_LIBS变量是OpenCVConfig.cmake定义好的,直接用即可

运行结果:显示lena图像
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zzyczzyc/article/details/84193696