OpenCV4.10.0版本在ubuntu 22.04环境安装教程

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 文件的界面如下:
成功生成的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后的打印显示如下
GUI

  • 注意如果你第一次安装,按照上面的方式安装,不会出现上面的问题。

总结

以上就是今天要讲的内容,本文仅仅简单介绍了OpenCV的开发环境安装,万事开头难,后面可以进行编程学习,小编推荐一个从零开始练习OpenCV代码的gitHub网址:Building-Computer-Vision-Projects-with-OpenCV4-and-CPlusPlus
安装遇到的问题,欢迎留言私信~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值