在 ubuntu 20.04 系统上,安装 OpenCV 4 的 C++ 开发环境。
1. 安装前准备
(1)安装依赖项
OpenCV 有很多的依赖项,有一些必须的,还有很多可选的。 必须的: gcc , cmake , build-essential , libtbb (英特尔线程构建模块), GTK+2.x 或更高版本,这些 Ubuntu 系统通常都会自带安装。
sudo apt install build-essential cmake libtbb2 libttb-dev libgtk-3-dev
可选的: 可选的依赖项有很多,如图片编码库、视频编码库等。这些依赖项是针对某些特定的功能,即使没有安装也不会影响OpenCV 4 的编译与使用。建议将常用的依赖都安装上,防止以后需要用到某些特定的功能。
sudo apt install python3 python3-dev pkg-config
sudo apt install libjpeg-dev libpng-dev libtiff-dev libjasper-dev
sudo apt install zlib1g zlibe1g-dev libavcodec-dev libavformat-dev libswscale-dev
sudo apt install libv4l-dev libxvidcore-dev libx264-dev libatlas-base-dev libdc1394-22-dev
sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
sudo apt install gfortran openexr libopenexr-dev
(2)下载源码
从 OpenCV 的 github 上下载最新的源码(source code),
2. 编译与安装
解压后可以得到 OpenCV 4.5.3 的源码。 (1)进入源码目录,创建并进入 build 文件夹
cd opencv-4.5.3
mkdir build
cd build
(2)运行 cmake 命令,进行编译检查
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..
关于编译选项的说明:
-D OPENCV_GENERATE_PKGCONFIG=ON ,OpenCV4 默认不生成.pc 文件,该选项开启生成 opencv4.pc 文件,从而支持pkg-config 功能。-D CMAKE_INSTALL_PREFIX=/usr/local ,指定安装路径,设置该选项后,各部分分别安装在/usr/local/ 目录的include/ ,bin/ ,lib/ 3个文件夹下。
在执行 cmake 命令的过程中,会自动下载IPPICV ,通常会报错如下,
-- IPPICV: Download: ippicv_2020_lnx_intel64_20191018_general.tgz
-- Try 1 failed
--
=======================================================================
Couldn't connect to server from the Internet.
Perhaps direct connections are not allowed in the current network.
To use proxy please check/specify these environment variables:
- http_proxy/https_proxy
- and/or HTTP_PROXY/HTTPS_PROXY
=======================================================================
CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
IPPICV: Download failed: 7;"Couldn't connect to server"
For details please refer to the download log file:
~/opencv-4.5.3/build/CMakeDownloadLog.txt
这是由于无法正常访问 https://raw.githubusercontent.com 网站,可以通过修改 hosts 文件的方式来解决: (1)使用sudo vi /etc/hosts ,打开hosts 文件, (2)在文件末尾添加185.199.109.133 raw.githubusercontent.com , (3)sudo systemctl restart NeworkManager.service 重启网络服务,使上述修改生效。 (4)ping raw.githubusercontent.com ,如果能 ping 通,且延时不大,则说明能正常访问。
重新执行cmake 命令,发现IPPICV 部分能正常下载。
-- IPPICV: Download: ippicv_2020_lnx_intel64_20191018_general.tgz
-- found Intel IPP (ICV version): 2020.0.0 [2020.0.0 Gold]
-- at: ~/opencv-4.5.3/build/3rdparty/ippicv/ippicv_lnx/icv
-- found Intel IPP Integration Wrappers sources: 2020.0.0
-- at: ~/opencv-4.5.3/build/3rdparty/ippicv/ippicv_lnx/iw
(3)编译并安装
sudo make -j8
sudo make install
-j8 选项是指使用 8 个线程进行编译,这个可以根据自己的电脑性能进行设置,默认为单线程。使用 8 个线程进行编译时,大概 10 分钟能完成编译过程。
(4)C++ 环境配置 先在/etc/ld.so.conf.d/ 文件夹下新建一个opencv4.conf 文件,然后写入/usr/local/lib
cd /etc/ld.so.conf.d/
sudo touch opencv4.conf
sudo sh -c 'echo "/usr/local/lib" > opencv4.conf
然后,更新pkg-config 。
sudo ldconfig
编辑 bashrc 文件,添加下面两条语句。
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
此时,使用下面的两条命令,应该能够查看到相应的路径。
> pkg-config --libs opencv4
-I/usr/local/include/opencv4
> pkg-config --cflags opencv4
-L/usr/local/lib -lopencv_gapi -lopencv_highgui -lopencv_ml
-lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_video
-lopencv_calib3d -lopencv_features2d -lopencv_dnn -lopencv_flann
-lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc -lopencv_core
使用下面的命令可以查看opencv 的版本。
> opencv_version
4.5.3
3. 编程测试
编写一个简单的图像显示程序,来测试安装的 OpenCV 4 开发环境。 源码display_image.cpp 文件,
#include <opencv2/opencv.hpp>
int main(int argc, char** argv)
{
cv::Mat img = cv::imread(argv[1], -1);
if(img.empty())
return -1;
cv::namedWindow("display image", cv::WINDOW_AUTOSIZE);
cv::imshow("display image", img);
cv::waitKey(0);
cv::destroyWindow("display image");
return 0;
}
(1)命令行方式编译
使用以下命令进行编译,
g++ display_image.cpp -o display_image.out `pkg-config opencv4 --cflags --libs`
注意:命令中的单引号必须是`` (键盘左上角数字键 1 左边的按键),而不是常用的'' ,否则会显示找不到文件。
(2)cmake 方式编译
编写 CMakeLists.txt 文件,
cmake_minimum_required(VERSION 2.6)
project(display_image)
set(CMAKE_CXX_FLAGS "-std=c++11")
find_package(OpenCV 4.3.5 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(display_image display_image.cpp)
target_link_libraries(display_image ${OpenCV_LIBS})
然后,进行编译,
mkdir build
cmake ..
make
编译后,使用以下命令运行程序,可以打开对应的图像,
../dispaly_image.out path_to_picture
opencv 自带了许多示例程序,在 opencv-4.5.3/samples/cpp 和opencv-4.5.3/samples/cmake 目录中,可以编译后运行。
4. 卸载
如果需要卸载 OpenCV,可以使用下面的方法。 (1)删除opencv4.conf 文件
cd /etc/ld.so.conf.d/
sudo rm opencv4.conf
(2)卸载 进入编译 opencv 的 build 文件夹
cd opencv-4.5.3/build
sudo make uninstall
参考链接
- Ubuntu中安装OpenCV4和环境配置
- Ubuntu系统中安装OpenCV 4
- Ubuntu 18.04安装OpenCV4.0和环境配置
- Ubuntu20.04安装OpenCV4.5.1的详细步骤
|