Linux(ubantu16.04)下安装、配置、测试OpenCV(C++);更新源问题;安装过程常见问题

       PS:开始先在公司内网服务器上尝试安装OpenCV,但是很多命令需要root特权权限、普通用户无法执行。所以这条路就放弃了(在服务器上安装请参考其他博文~),直接就在本地主机上安装了(但是道路依旧十分曲折,仿佛每一步都有问题,花了好几天…)。
       参考:Linux环境下OpenCV的安装与配置

一、安装

1.准备工作:

1.1 linux下搭建C/C++开发环境:

( 更新源问题:)

方式1:

sudo apt install gcc
sudo apt install g++

方式2:安装build-essential,安装了该软件包,编译c/c++所需要的软件包也都会被安装

sudo apt install build-essential

1.2 安装相关依赖库:

1.2.1:准备——更新源问题、软件包无法下载问题、网络连接失败等问题(参考:修改Ubuntu更新源服务器为国内地址两种方式(图形界面和命令行方式))
       方式1:图形界面配置:

搜索“软件和更新”:Linux(ubantu16.04)下安装、配置、测试OpenCV(C++);更新源问题;安装过程常见问题_第1张图片
更换“更新源”:ubantu默认国外的源,经常用还是换国内的:清华的、中科大的、华为云、阿里云等等都可以,选择一个你熟悉的,这里用的中科大的:
步骤:将下面四个橙色的对钩打上;“Download from”选择other–china–ustc中科大的源;弹出的验证框输入user的密码;右下角Close–Restore(等待一两分钟)
Linux(ubantu16.04)下安装、配置、测试OpenCV(C++);更新源问题;安装过程常见问题_第2张图片update界面如下:Close-Restore
Linux(ubantu16.04)下安装、配置、测试OpenCV(C++);更新源问题;安装过程常见问题_第3张图片

       方式2:代码方式2:基于命令行

1.打开终端,将sources.list文件备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.old

2.打开sources.list文件,可以用你熟悉的任何文字编辑器–vim,gedit,atom等都可以
sudo -i(我的sources是只读文件,所以用特权)
sudo gedit /etc/apt/sources.list

所有内容为中科大的源(其他源见参考网址)

deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

退出root : exit
3.复制完后,保存退出。然后别忘了更新缓存。
输入:sudo apt-get update

1.2.2 安装相关依赖库

安装libgtk,GTK(GIMP Toolkit)是一个Linux平台下基于Xwindow图形窗口的图形用户编程接口工具,可以借助它来开发Linux平台下基于Xwindow的图形用户界面。

sudo apt install libgtk2.0-dev

安装pkg-config

sudo apt install pkg-config

安装ffmpeg,ffmpeg(命令行工具) 是一个快速的音视频转换工具。

sudo apt install ffmpeg

安装libavcodec-dev

sudo apt install libavcodec-dev 

安装libavformat-dev

sudo apt install libavformat-dev

安装libswscale-dev

sudo apt install libswscale-dev

根据实际需要,选择性安装libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev等(这里我出错了,有些包找不到,也不需要用就没安装)

sudo apt install libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev libtbb2 libtbb-dev libdc1394 2.x CUDA Toolkit 6.5
1.2.3 这里我出现过的问题:

1.网址不通:按照1.准备工作步骤进行更新源的选择和配置;更换网络代理(根据需要自己选择路径端口号);还有其他方法和原因记不清了…
Linux(ubantu16.04)下安装、配置、测试OpenCV(C++);更新源问题;安装过程常见问题_第4张图片

Linux(ubantu16.04)下安装、配置、测试OpenCV(C++);更新源问题;安装过程常见问题_第5张图片
注意:右上角airplane mode一定选on才生效。

2.一些包找不到–没用到那些包,这个问题没管,以后用的再说。
Linux(ubantu16.04)下安装、配置、测试OpenCV(C++);更新源问题;安装过程常见问题_第6张图片


2.安装OpenCV:

2.1 :下载所需版本:

官网安装需要的版本:https://opencv.org/releases/
这里用的是3.4.2,版本不同安装和使用差异大,出错也会各不相同,建议怕麻烦用推荐即可。
解压到自建的路径下:
Linux(ubantu16.04)下安装、配置、测试OpenCV(C++);更新源问题;安装过程常见问题_第7张图片

2.2:进入opencv-3.4.2目录,新建一个编译目录(如图):

在这里插入图片描述
进入编译目录:

cd build

进行cmake-make编译:

cmake ..
make -j2   //电脑核数不够直接-j

Linux(ubantu16.04)下安装、配置、测试OpenCV(C++);更新源问题;安装过程常见问题_第8张图片Linux(ubantu16.04)下安装、配置、测试OpenCV(C++);更新源问题;安装过程常见问题_第9张图片
这里等待时间可能较长,十分钟左右
100%后即成功。

2.3:PS这里会出现的问题:cmake命令

        1.cmake不成功,有的博文给的cmake命令很长:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_GTK=ON -D WITH_OPENGL=ON ..

在这里插入图片描述也成功了 。

        2.CMakeLists.txt文件没找到。未解决。

若是以上问题解决不了,就按照上述方法一步步仔细核对进行,失败直接把build删除重新弄就行。

二、配置(严格按照步骤,不然后面出错)

1.进入root权限(不然我遇到的问题是文件只能读,不能改),在终端输入:没有vi可以去图形界面手动找这个文件夹

sudo -i
vim /etc/ld.so.conf.d/opencv.conf

(可能打开后是空的)
在这里插入图片描述

添加已以下内容:

Linux(ubantu16.04)下安装、配置、测试OpenCV(C++);更新源问题;安装过程常见问题_第10张图片

sudo ldconfig生效

2.终端输入:vim /etc/bash.bashrc,进入bash.bashrc文件,在尾行添加

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

在这里插入图片描述
source /etc/bash.bashrc执行生效。

3.exit退出root。
在这里插入图片描述

4.检查是否配置成功:pkg-config opencv --modversion
在这里插入图片描述

三、OpenCV测试:

1.检查opnecv是否安装成功:

终端输入:ldconfig -v | grep opencv

Linux(ubantu16.04)下安装、配置、测试OpenCV(C++);更新源问题;安装过程常见问题_第11张图片

2.编写代码测试:(用库自带样例测试方式略)

任意目录创建一个工作目录A(我的是mywork)便于自己记住和管理。

2.1 编写源代码:— —“1.cpp文件”

#include 
int main()
{
    cv::Mat image = cv::imread("/home/user/opencv/opencv-3.4.2/myWork/1.jpg", cv::IMREAD_COLOR);
    cv::imshow("test",image);
    cv::waitKey(0);
    return 0;

}

2.2 编写CMake文件: 参考使用CMake构建OpenCV项目

CMake文件的文件名CMakeLists.txt有严格的大小写要求,注意不要写错。

cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage 1.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

1.设置cmake要求的最低版本号;
2.工程名称:一会编译后在build下面生成这个名字的可执行文件。

PROJECT(projectname [CXX] [C] [Java])

你可以用这个指令定义工程名称,并可指定工程支持的语言,支持的语言列表是可以忽略的;
这个指令隐式的定义了两个cmake变量:_BINARY_DIR以及_SOURCE_DIR。前者指构建路径,后者指工程路径,即CMakeLists.txt所在的路径。

同时cmake系统也帮助我们预定义了PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR变量,他们的值分别跟opencv_test_BINARY_DIR与opencv_test_SOURCE_DIR一致。

为了统一起见,建议以后直接使用PROJECT_BINARY_DIR,PROJECT_SOURCE_DIR,即使修改了工程名称,也不会影响这两个变量。如果使用了_SOURCE_DIR,修改工程名称后,需要同时修改这些变量。

3.很重要的指令:find_package
这个指令以被用来在系统中自动查找配置构建工程所需的程序库。在linux和unix类系统下这个命令尤其有用。CMake自带的模块文件里有大半是对各种常见开源库的find_package支持,支持库的种类非常多。

当它找到OpenCV程序库之后,就会帮助我们预定义几个变量,OpenCV_FOUNDOpenCV_INCLUDE_DIRSOpenCV_LIBRARY_DIRSOpenCV_LIBRARIES,它们分别指是否找到OpenCV,OpenCV的头文件目录,OpenCV的库文件目录,OpenCV的所有库文件列表。
4.add:这个命令很好理解,首先是可执行文件的名字,然后是源码的名字。
这个命令一定要在TARGET_LINK_LIBRARIES之前使用。
5.用来设置需要的库文件:

TARGET_LINK_LIBRARIES(target library1<debug | optimized> library2...)

其中的target就是前面设置生成的目标文件(可执行文件).
6.其他没用到:
include_directories(${OpenCV_INCLUDE_DIRS})设置包含的头文件的路径
link_directories(${OpenCV_LIBRARY_DIRS})设置库文件的路径

CMakeLists.txt介绍完毕。


2.3 执行:

1.进入A文件目录;
2.新建一个编译目录

mkdir build

ps:注意如果是刚刚执行编译了,重新编译要先手动清空build中的东西,不然报错。

3.进行cmake-build编译,100%就成功。然后build目录下面出现了很多文件。

cmake ..
make

4.目录不动,执行build里面的可执行文件:

 ./DisplayImage 

5.如图界面:执行成功后会蹦出一个窗口test,显示"1.jpg图像"。

Linux(ubantu16.04)下安装、配置、测试OpenCV(C++);更新源问题;安装过程常见问题_第12张图片

Linux(ubantu16.04)下安装、配置、测试OpenCV(C++);更新源问题;安装过程常见问题_第13张图片

你可能感兴趣的:(opencv,opencv)