1、在Linux终端输入命令,安装依赖文件
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
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install ffmpeg
2、安装pkg-config
我们都知道,在linux下安装第三方软件时要用到第三方软件的头文件以及相关库,在编译安装时指定库和头文件是十分麻烦的,而pkg-config能够把这些头文件和库文件的位置指出来,给编译器使用。因此我们可以安装pkg-config来减轻工作量。
终端输入:
apt-get install pkg-config
3、下载opencv源码。
到openCV官网:https://opencv.org/releases/下载3.1.0版本的OpenCV源码(在windows系统或Linux系统下载都一样):
然后解压为一个opencv3.1.0的文件夹
4、(前提是在这个文件夹下打开终端)通过命令,在opencv3.1.0文件夹里面新建一个文件夹bulid,然后进入这个文件夹。
> sudo mkdir build
> cd bulid
5、用命令生成makefile文件。(这一步会遇到了一个ippicv的问题)
$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
安装时会出现一个关于ippicv错误如下:
ICV: Downloading ippicv_linux_20151201.tgz...
CMake Error at 3rdparty/ippicv/downloader.cmake:73 (file):
file DOWNLOAD HASH mismatch
for file: [/home/dong/opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ippicv_linux_20151201.tgz]
expected hash: [808b791a6eac9ed78d32a7666804320e]
actual hash: [0880382389811547b83e9450d6c049f2]
status: [28;"Timeout was reached"]
Call Stack (most recent call first):
3rdparty/ippicv/downloader.cmake:110 (_icv_downloader)
cmake/OpenCVFindIPP.cmake:243 (include)
cmake/OpenCVFindLibsPerf.cmake:37 (include)
CMakeLists.txt:558 (include)
CMake Error at 3rdparty/ippicv/downloader.cmake:77 (message):
ICV: Failed to download ICV package: ippicv_linux_20151201.tgz.
Status=28;"Timeout was reached"
Call Stack (most recent call first):
3rdparty/ippicv/downloader.cmake:110 (_icv_downloader)
cmake/OpenCVFindIPP.cmake:243 (include)
cmake/OpenCVFindLibsPerf.cmake:37 (include)
CMakeLists.txt:558 (include)
解决办法:按如图找到ippicv_linux_20151201.tgz文件复制到下图第四步downloads文件夹下。再将第二步这个文件夹ippicv复制到build文件夹下的3rdparty文件里。
输入以下命令重新cmake
$ cmake -D WITH_IPP=OFF -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
点不可省略,其表示上一级
命令解释:
CMAKE_BUILD_TYPE:build的类型,有Release和Debug两种
CMAKE_INSTALL_PREFIX:指定想要安装OpenCV的文件夹目录,一般就用/usr/local
这个安装地址有讲究,一定要记住,后面配置环境要用,所以不要随便安装。
6、开始构建build。输入命令:make -j4 即可
7.安装(这一步别人会出问题,我的没有问题。有问题多数是缺文件,需要手动添加文件。你们在这步出了问题,自行解决,问我我也不会哈哈。)
sudo make install
8、测试
在一个随便文件夹建立两个文件:一个.cpp文件,一个CMakeLists.txt文件,这个CMakeLists.txt名字不可错。在下载一张.png图片到该文件夹里。现在这个文件夹有三个文件。
.cpp文件里的内容如下(要一毛一样,和地址啥的都无关):
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
if ( argc != 2 )
{
printf("usage: DisplayImage.out <Image_Path>\n");
return -1;
}
Mat image;
image = imread( argv[1], 1 );
if ( !image.data )
{
printf("No image data \n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
创建一个CMakeLists.txt文件,内容是:
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
测试案例的实现链接 参考:bilibili
运行步骤:
在该文件夹下的终端里输入cmake .
成功后在输入make
编译完成。
编译完成后测试
输入./(程序文件名),跟上图片的名字。没有阔号。例如:./DisplayImage a.png
结果会出现一张图片。
至此,安装全部完成。
除此之外还会出现找不到库的现象,需要配置环境,请看下一篇:opencv环境变量的配置