Linux环境下OpenCV的安装与配置

Linux下OpenCV的安装

1.cmake以及相关依赖库的安装

因为OpenCV2.2版本之后,需要用cmake来生成Makefile文件,因此在安装OpenCV之前,要安装cmake以及cmake依赖库。

终端输入:apt-get install cmake

apt-get install build-essential libgtk2.0-dev libavcodec-dev

libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev

安装完成后输入:cmake -version检查cmake是否安装成功

 

2.opencv的安装

我们都知道,在linux下安装第三方软件时要用到第三方软件的头文件以及相关库,在编译安装时指定库和头文件是十分麻烦的,而pkg-config能够把这些头文件和库文件的位置指出来,给编译器使用。因此我们可以安装pkg-config来减轻工作量。

终端输入:apt-get install pkg-config

OpenCV的下载地址为:http://www.opencv.org.cn/index.php/Download

之后将文件通过VMware的共享文件夹将文件发送到linux下

进入共享文件夹,将文件复制到指定目录

终端输入:cp opencv-3.3.0.zip /nfsroot/opencv

进入实验目录/nfsroot/opencv进行OpenCV的安装

终端输入:unzip opencv-3.3.0.zip

解压完成后将在改目录下生成opencv-3.3.0目录

进入该目录,新建一个目录进行OpenCV的编译目录(否则会报以下错误)

Linux环境下OpenCV的安装与配置_第1张图片​​

终端输入:mkdir build

cd bulid

cmake ..

发现不能执行,并且报错情况如下:

https://img-blog.csdnimg.cn/20190104110333523.png

这是提示我们需要Cmake 2.8.12.2或更高版本的Cmake,当前版本为2.8.7

因此我们需要下载更高版本的Cmake(安装教程在后面)

 

进入OpenCV的安装目录/nfsroot/opencv/opencv-3.3.0/build

终端输入:cmake ..

如果执行过程中遇到:CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.   Please set CMAKE_CXX_COMPILER to a valid compiler path or name.

需要安装g++,终端输入:apt-get install g++

执行完毕后终端输入:make -j4

(在多核宿主机上,可以通过-j选项来提高make命令的执行速度,单核机器就不要尝试了)

输入make install

等make install执行完毕之后,需要对环境变量进行配置

终端输入:vim /etc/ld.so.conf.d/opencv.conf

在文件末尾添加:/usr/local/lib(可能是空文件)

配置环境变量

终端输入:vim /etc/bash.bashrc

在文件末尾添加:   

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

export PKG_CONFIG_PATH

配置完成后重新打开终端,使得配置生效

4.opencv的测试

终端输入:ldconfig -v | grep opencv

检查opnecv是否安装成功

Linux环境下OpenCV的安装与配置_第2张图片

在/home目录下创建test.cpp

内容如下:

#include "highgui.h"
#include "opencv2/opencv.hpp"
#include 

#define Usage() \
        { std::cerr << "Usage: ./showpic FILE" << std::endl; }
//using namespace cv;

int main(int argc, char** argv)
{
        if (argc != 2) Usage();
        IplImage* img = cvLoadImage(argv[1]);
        cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE);
        cvShowImage("Example1", img);
        cvWaitKey(0);
        cvReleaseImage(&img);
        cvDestroyWindow("Example1");
}

 

终端输入:g++ test.cpp `pkg-config --libs --cflags opencv` -o  a.out

进行编译之后,在该目录下复制过来一个.jpg格式的图片文件

终端输入./a.out ./1.jpg(图片名)

成功执行后将会出现一个窗口显示图片

如果执行之后,提示错误如下:

error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function ‘cvNamedWindow’

则表示显示窗口有问题,解决方法如下:apt-get install libgtk2.0-dev pkg-config

安装完毕后,需要重新运行cmake对opencv源码进行编译安装

 

下载更高版本的Cmake

终端输入:apt-get autoremove cmake,卸载Cmake

apt-get install build-essential

wget http://www.cmake.org/files/v3.12/cmake-3.12.3.tar.gz

执行过程中,系统提示:

错误: 没有匹配的证书主体别名 (Subject Alternative Name)。

请求的主机名为 “cmake.org”。

要以不安全的方式连接至 cmake.org,使用“--no-check-certificate”。

因此在wget http://www.cmake.org/files/v3.12/cmake-3.12.3.tar.gz后加上该指令

之后便将cmake-3.12.3.tar.gz保存到当前目录

在/usr/local目录下新建cmake目录,用来安装cmake

终端输入cp cmake-3.12.3.tar.gz /usr/local/cmake,将文件拷贝到指定目录

进入该目录,终端输入:tar xzvf cmake-3.12.3.tar.gz,将文件解压到当前文件夹

终端输入:./configure

make

make install

执行完毕后输入:cmake -version查看cmake版本

 

假如在执行./configure时遇到错误提示:

Cannot find appropriate C++ compiler on this system.

Please specify one using environment variable CXX.

See cmake_bootstrap.log for compilers attempted.

---------------------------------------------

Log of errors:

/home/ltu/Downloads/cmake-3.1.0/Bootstrap.cmk/cmake_bootstrap.log

这是提示系统缺少g++,如果你没有安装g++,终端输入:apt-get install g++

如果你已经安装了g++,仍然收到这个提示,请更换cmake压缩包版本

 

例如:本人更换到cmake-3.2.2,无错误提示

下载链接:http://www.cmake.org/files/v3.2/cmake-3.2.2.tar.gz

 

cmake环境的配置

成功安装cmake之后,需要配置环境变量才能成功运行cmake

终端输入:vim /etc/profile

在文件末尾加上:

export PATH=$PATH:/home/uptech/cmake/cmake-3.2.2/bin

(请根据个人安装路径更改)

之后终端输入:source /etc/profile使得配置生效

 

OpenCV的安装可能遇到的问题

 

make执行过程中提示错误信息:

/usr/bin/ld: CMakeFiles/opencv_imgproc.dir/src/resize.cpp.o: relocation R_386_GOTOFF against undefined symbol `void (anonymous namespace)::hlineResize(int*, int, int*, (anonymous namespace)::fixedpoint64*, (anonymous namespace)::fixedpoint64*, int, int, int)' can not be used when making a shared object

/usr/bin/ld: final link failed: Bad value

这个错误提示是因为gcc的问题,可以尝试安装libstdc++

但是终端输入:ap-get install libstdc++时却出现

 

E:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系

这是软件更新源的问题

解决方法:

打开更新管理器

Linux环境下OpenCV的安装与配置_第3张图片

在设置中找到软件更新栏

选择重要安全更新和推荐更新

Linux环境下OpenCV的安装与配置_第4张图片

在其它软件选项卡中去掉有问题的源

Linux环境下OpenCV的安装与配置_第5张图片 ​​

之后点击安装更新或者终端输入:apt-get update进行手动更新

 

你可能感兴趣的:(linux开发板)