当前位置: 首页 > article >正文

Ubuntu 安装 OpenCV (C++)

版本详情:

Ubuntu: 22.04 + 5.15.0-133-generic

gcc: 11.4.0

g++: 11.4.0

OpenCV: 4.7.0

1. 卸载 OpenCV

进入原先编译 opencv 的 build 目录,在该目录下打开终端,执行以下代码(如果 build 已经删除了,可以重新编译一遍该版本的 opencv,然后在最后一步执行 sudo make uninstall)

sudo make uninstall
cd ..
sudo rm -r build
sudo rm -r /usr/local/include/opencv4 /usr/local/include/opencv3 /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv4 /usr/include/opencv3 /usr/include/opencv2  /usr/include/opencv /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

执行代码后可能会报错,忽略掉

sudo apt-get --purge remove opencv-doc opencv-data python-opencv
sudo apt-get autoremove opencv-doc opencv-data libopencv-dev libopencv2.4-java libopencv2.4-jni python-opencv libopencv-core2.4 libopencv-gpu2.4 libopencv-ts2.4 libopencv-photo2.4 libopencv-contrib2.4 libopencv-imgproc2.4 libopencv-superres2.4 libopencv-stitching2.4 libopencv-ocl2.4 libopencv-legacy2.4 libopencv-ml2.4 libopencv-video2.4 libopencv-videostab2.4 libopencv-objdetect2.4 libopencv-calib3d2.4
pkg-config opencv --libs pkg-config opencv --modversion

执行完以上步骤,一般就可以完全卸载OpenCV

2. 安装 OpenCV

(1) 更新软件包和安装工具

sudo apt update
sudo apt install -y cmake g++ wget unzip

(2) 安装必要的依赖项

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

(3) 下载 OpenCV

前往 OpenCV 官网,选择你需要的版本进行下载。通常,下载页面会提供不同格式的包,如源代码包(Sources)和预编译包(Pre-built binaries)等。也可以如下通过命令下载。

wget -O opencv.zip https://github.com/opencv/opencv/archive/4.7.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.7.0.zip
unzip opencv.zip
unzip opencv_contrib.zip

如果不需要 opencv_contrib 则不需要下载

(4) 创建路径

mkdir opencv
mv -r ./opencv-4.7.0 ./opencv
mv -r ./opencv_contrib-4.7.0 ./opencv
cd opencv
mkdir build
cd build

如果不需要 opencv_contrib 则不需要移动

(5) 配置 CMake

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.7.0/modules/ ../opencv-4.7.0

注意最后两条的路径配置要正确。如果不需要 opencv_contrib 则不需要 -DOPENCV_EXTRA_MODULES_PATH。这里 -D CMAKE_BUILD_TYPE=Release 指定了构建类型为 Release(优化版本),-D CMAKE_INSTALL_PREFIX=/usr/local 指定了安装前缀为 /usr/local。

此外,据说还要增加 -DOPENCV_GENERATE_PKGCONFIG=ON,这是为了在 /usr/loacl/lib/pkgconfig/ 目录下自动生成 opencv4.pc 文件。这个可能是与下面 环境配置 一起构成 pkgconfig 的配置,如此可以完成下面 pkg 的 g++ 调用方式。

(6) 编译和安装

sudo make -j$(nproc)
sudo make install

(7) 测试

opencv_version
4.7.0

# pkg-config opencv --modversion # 4版本以下

3. 配置环境

实测不需要下面的环境配置,OpenCV 依然可以使用,但大部分教程都有下面的环境配置环节,所以这里也记录了环境配置过程

(1) 配置库文件

在 /etc/ld.so.conf.d/ 加入对于库的 .conf 文件,首先新建 opencv.conf

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

打开文件之后输入(可能是个空文件,没关系)

/usr/local/lib

输入以下代码,将 /etc/ld.so.conf.d 中的数据读入缓存

sudo ldconfig

(2) 配置环境变量

添加 pkg-config 环境变量,打开文件之后输入路径

sudo vim ~/.bashrc

把这个路径添加在文件最后(如果不是/usr/local路径下,则改成自己的路径)

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

更新环境变量

source ~/.bashrc

以上所有命令的具体含义和解释可以参考最后参考链接 1。

完成 OpenCV 安装后,如果空间不够,完全可以删除上面的 opencv 文件夹,以及两个 zip 文件。

4. 编译 OpenCV 程序

安装完成后,可以发现 OpenCV 被安装到 /usr/local/include/opencv4 

(1) g++ 编译

必须加上后面这一长串,否则找不到头文件或者库文件

g++ your_program.cpp -o your_program -I/usr/local/include/opencv4 -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs

#
这里
-I/usr/local/include/opencv4指定了头文件搜索路径,
-L/usr/local/lib指定了库文件搜索路径,
-lopencv_...指定了要链接的库。
#

或者使用如下命令,上面 配置环境 那一步可能会影响到下面这一命令,未测试。

g++ `pkg-config opencv --cflags` your_program.cpp -o your_program `pkg-config opencv --libs`

(2) CMakeList 编译

路径结构

inculde 语句

#include <opencv2/core/core.hpp>
#include <opencv2/opencv.hpp>

using namespace cv;  //OpenCV 的命名空间

编译命令

mkdir build
cd build/
cmake ..
make

CMakeList.txt 文件如下,其中 AVM2D 是我的源文件名。

# cmake needs this line
cmake_minimum_required(VERSION 3.1)

# Define project name
project(AVM2D_project)

# Find OpenCV, you may need to set OpenCV_DIR variable to the absolute path to the directory containing OpenCVConfig.cmake file via the command line or GUI
find_package(OpenCV REQUIRED)

# If the package has been found, several variables will be set, you can find the full list with descriptions in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS "    config: ${OpenCV_DIR}")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

# Declare the executable target built from your sources
add_executable(AVM2D AVM2D.cpp)

# Link your application with OpenCV libraries
target_link_libraries(AVM2D PRIVATE ${OpenCV_LIBS})

关于 OpenCV 下 CMakeList.txt 的使用方式参考如下链接 4。通过 set() 命令可以指定 OpenCV 包的搜索路径。

参考链接:

1. ubuntu opencv 安装

2. OpenCV安装(Ubuntu)

3. 04【安装】【避坑指南】Ubuntu中安装OpenCV

4. opencv在 Cmakelist的写法以及编译详解

5. Ubuntu系统---编译opencv程序的几种方式g++、Makefile、Cmake

6. opencl 安装centos linux安装opencv4


http://www.kler.cn/a/555105.html

相关文章:

  • 前端性能测试优化案例
  • kettle从入门到精通 第九十二课 ETL之kettle 使用Kettle的Carte对外发布读写接口
  • 【论文技巧】Mermaid VSCode插件制作流程图保存方法
  • [Android] APK提取器(1.3.7)版本
  • 如何组织和管理JavaScript文件:最佳实践与策略
  • 泰山派RK3566移植QT,动鼠标时出现屏幕闪烁
  • #渗透测试#批量漏洞挖掘#畅捷通T+远程命令执行漏洞
  • 使用 Docker 部署 Flask 应用
  • DeepSeek 对低代码产品的影响:机遇、挑战与未来展望
  • css里flex+margin布局
  • 深度探索:DeepSeek与鸿蒙HarmonyOS应用开发的深度融合
  • 家庭相册私有化方案:Docker部署PhotoPrism与跨平台管理指南
  • java实现动态数组(二)
  • 论文阅读笔记:Tree Energy Loss: Towards Sparsely Annotated Semantic Segmentation
  • 10、k8s对外服务之ingress
  • postman传query一个数组类型的参数,并且数组里面只有一个值的时候
  • STM32 物联网智能家居 (六) OLED显示设备
  • 【HarmonyOS NEXT】获取正式应用签名证书的签名信息
  • 【python】网页批量转PDF
  • 基于图扑 HT 可视化技术打造智慧地下采矿可视化方案