OpenCV 4.10.0在ubuntu 22.04安装教程
OpenCV(Open Source Computer Vision Library)是一个跨平台的计算机视觉库,本文主要介绍OpenCV4.10.0版本在ubuntu 22.04环境安装教程和中间遇到的问题。帮助大家在学习opencv的时候搭建一个可以练习的环境。
一、linux的安装环境
系统的版本信息
$ uname -a
Linux xx-MS-7E06 6.8.0-45-generic #45~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Sep 11 15:25:05 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
二、准备工作
需要下载好opencv的源代码,在命令行内输入如下两个命令
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
然后安装编译源码的所需要的依赖库和程序,依次输入如下命令
$ sudo apt-get update
$ sudo apt-get install build-essential cmake git pkg-config libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev python3-dev python3-numpy libtbb2 libtbb-dev -y
$ sudo apt install qtbase5-dev qtdeclarative5-dev
三、开始进行源码编译
cmake的编译命令:cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_QT=ON -D WITH_OPENGL=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_EXTRA_MODULES_PATH=~/test/opencv_contrib/modules -D BUILD_EXAMPLES=ON …
里面的 OPENCV_EXTRA_MODULES_PATH 参数使用绝对路径参数
yz@yz-MS-7E06:~/test$ ls
opencv opencv_contrib
yz@yz-MS-7E06:~/test$ cd opencv
yz@yz-MS-7E06:~/test/opencv$ mkdir build
yz@yz-MS-7E06:~/test/opencv$ cd build/
yz@yz-MS-7E06:~/test/opencv/build$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_QT=ON -D WITH_OPENGL=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_EXTRA_MODULES_PATH=~/test/opencv_contrib/modules -D BUILD_EXAMPLES=ON ..
cmake生成成功的Makefile 文件的界面如下:
下面开始进行代码编译和安装
注意:使用make命令的时候,可以传参-jn加快编译速度,n应和自己电脑cpu核数保持一致,否则可能出现资源竞争导致的构建失败问题。通过如下命令查询电脑的核数,小编的电脑输出是24核
$ grep 'siblings' /proc/cpuinfo | uniq | awk -F: '{print $2}' | xargs
24
开始编译,需要等待大概4分钟左右
$ make -j24
$ sudo make install
查询安装OpenCV程序的版本信息
$ pkg-config --modversion opencv4
4.10.0
$ python3 -c "import cv2; print(cv2.__version__)"
4.10.0-dev
出现上面对应的打印说明OpenCV已经正确安装OK了
四、使用C++程序进行测试
写一个读取显示本地jpg图片的一个例子,本例子使用cmake方式进行生成Makefile,文件结构如下:
$ tree
.
├── build
├── CMakeLists.txt
├── lena.jpg
└── main.cpp
1 directory, 3 files
文件CMakeLists.txt的内容
cmake_minimum_required(VERSION 3.0)
project(readPic)
FIND_PACKAGE(OpenCV 4.10.0 REQUIRED)
MESSAGE("opencv version: ${OpenCV_VERSION}")
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIB_DIR})
# 设置二进制文件的输出目录为项目目录下的 build 文件夹
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build")
SET(SRC main.cpp)
# add_library(Hello SHARED hello.cpp hello.h)
option(WITH_LOG "Custom Macro" OFF)
if(WITH_LOG)
add_definitions(-DLOG)
endif(WITH_LOG)
ADD_EXECUTABLE(${PROJECT_NAME} ${SRC})
# target_link_libraries(${PROJECT_NAME} Hello)
target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS} ${OpenCV_LIBS})
文件main.cpp
#include <iostream>
#include <string>
#include <sstream>
#include <opencv2/core.hpp>
#include <opencv2/core/utility.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/ximgproc.hpp>
using namespace cv;
using namespace cv::ximgproc;
using namespace std;
int main(int argc, const char **argv)
{
cv::getBuildInformation();
Mat lena= imread("../lena.jpg");
namedWindow("Lena");
// show images
imshow("Lena", lena);
displayOverlay("Lena", "Overlay 5secs", 5000);
displayStatusBar("Lena", "Status bar 5secs", 5000);
saveWindowParameters("Lena");
loadWindowParameters("Lena");
waitKey(0);
destroyWindow("Lena");
return 0;
}
执行如下命令进行编译
$ cd build/
$ cmake ..
-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenCV: /usr/local (found suitable version "4.10.0", minimum required is "4.10.0")
opencv version: 4.10.0
-- Configuring done
-- Generating done
-- Build files have been written to: /home/yz/test/cmake_test/build
$ make
[ 50%] Building CXX object CMakeFiles/readPic.dir/main.cpp.o
[100%] Linking CXX executable readPic
[100%] Built target readPic
$ ./readPic
运行结果如下:
五、第一次安装遇到的问题分享
- 在第一安装后,运行上面的代码遇到如下的错误
The function/feature is not implemented) The library is compiled without QT support in function ‘displayOverlay’
这个时候注意编译OpenCV的cmake时候的打印会出现下图这样的打印
上面的打印提示不支持qt相关的函数调用,需要我们执行下面的命令安装相关的qt的组件
$ sudo apt install qtbase5-dev qtdeclarative5-dev
然后重新编译Opencv源代码,cmake的时候新增 -D WITH_QT=ON -D WITH_OPENGL=ON
,重新cmake后的打印显示如下
- 注意如果你第一次安装,按照上面的方式安装,不会出现上面的问题。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了OpenCV的开发环境安装,万事开头难,后面可以进行编程学习,小编推荐一个从零开始练习OpenCV代码的gitHub网址:Building-Computer-Vision-Projects-with-OpenCV4-and-CPlusPlus
安装遇到的问题,欢迎留言私信~