Ubuntu22.04环境下源码安装OpenCV 4.8.1(包含opencv_contrib-4.8.1)

因为项目需要用OpenCV对yolov8模型进行推理,通过DNN模块,之前本地的OpenCV版本是4.5.4(好像安装完ROS2 humble之后系统就自带了opencv),加载onnx模型一直报错,网上查询到需要4.7以上,干脆直接升级到4.8.1了。

1.源码下载

opencv:https://github.com/opencv/opencv

  • 选择4.8.1的源码包进行下载
    在这里插入图片描述

opencv_contrib:https://github.com/opencv/opencv_contrib

  • 同样选择4.8.1的源码包进行下载
    在这里插入图片描述
  • 下载好后选择通过图形界面或者unzip命令进行解压。并将contrib源码文件夹移动到opencv文件夹中
    在这里插入图片描述

2.环境准备

  • 安装依赖和cmake工具
    打开终端,输入如下代码进行安装依赖和cmake工具安装:
sudo apt-get install build-essential

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libgtk-3-dev

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

sudo apt-get -y install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

在这里插入图片描述

3.源码编译

  • 在之前解压的opencv-4.8.1文件夹下建立一个build文件夹,并进入该文件夹
mkdir build && cd build

PS:如果你不想安装opencv的其他一些语言的接口,可以自行参考下面的命令

指定编译类型,并将编译后的库安装到/usr/local/

sudo cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.8.1/modules -D BUILD_JAVA=OFF -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=OFF CMAKE_INSTALL_PREFIX=/usr/local ..

耐心等待,会下载一些其他库、、、
在这里插入图片描述
在这里插入图片描述

  • 编译
sudo make -j4

在这里插入图片描述
在这里插入图片描述

  • 安装到/usr/local
sudo make install

在这里插入图片描述

4.环境配置

  • 配置导入路径
sudo gedit /etc/ld.so.conf

在打开的文件后面添加/usr/local/lib,然后用下面的命令加载更新后的配置。
在这里插入图片描述

sudo ldconfig 
  • 输入以下命令检查安装版本
pkg-config opencv --modversion

如果出现如下错误:
在这里插入图片描述

解决:

 cd /usr/local/lib
 sudo mkdir pkgconfig # 如果已经存在则不需要再创建
 cd pkgconfig
 sudo gedit opencv.pc

在打开的文本写入如下信息,保存,然后退出

prefix=/usr/local

exec_prefix=${prefix}

includedir=${prefix}/include

libdir=${exec_prefix}/lib


Name: opencv

Description: The opencv library

Version:4.8.1

Cflags: -I${includedir}/openCV4

Libs: -L${libdir} -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann  -lopencv_core

~
  • 修改rc文件
gedit ~/.bashrc

在文件末尾添加两行:

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

关闭保存后,使用以下命令更新以下配置

source /.bashrc

输入以下命令检查安装版本

pkg-config opencv --modversion

在这里插入图片描述

5.测试验证

打开终端,进入原先opencv源码目录下,并输入以下命令对例程进行编译

cmake .
make
./opencv_example

得到以下画面

在这里插入图片描述
在这里插入图片描述

6.CMake中指定OpenCV版本

  • CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(OpenCVProject)

# 指定OpenCV版本的路径
set(OpenCV_DIR /usr/local/lib/cmake/opencv4)
find_package(OpenCV REQUIRED)
message(STATUS "***OpenCV version: ${OpenCV_VERSION}")

add_executable(MyOpenCVApp src/main.cpp)

target_link_libraries(MyOpenCVApp ${OpenCV_LIBS})
  • main.cpp
#include <opencv2/opencv.hpp>
#include <iostream>

int main()
{
    std::cout << "OpenCV version: " << CV_VERSION << std::endl;
    return 0;
}

参考:https://www.bilibili.com/read/cv30840280/

### Matlab 编译 OpenCV 4.8.1 教程 为了使 MATLAB 能够编译并使用 OpenCV 4.8.1 库,需遵循一系列特定设置和配置过程。此过程涉及安装必要的依赖项、下载 OpenCV 源代码以及通过 CMake 进行适当配置。 #### 安装必要工具和环境 确保已安装以下软件包: - **MATLAB**: 版本应支持 MEX 文件的创建。 - **C++ 编译器**: 推荐 Microsoft Visual Studio 或 MinGW-W64(注意 MinGW 存在某些模块无法编译的情况[^1]),并且该编译器版本要与 MATLAB 兼容。 - **CMake**: 至少为 3.x 版本以上用于构建 OpenCV。 - **Git**: 如果打算从 GitHub 上克隆最新源码的话。 #### 下载 OpenCV 源代码 可以从官方仓库获取指定版本 `v4.8.1` 的源文件: ```bash git clone --branch 4.8.1 https://github.com/opencv/opencv.git opencv-4.8.1 ``` #### 使用 CMake 构建项目 启动 CMake GUI 并完成如下操作: - 设置源代码路径指向之前克隆下来的目录 (`opencv-4.8.1`)。 - 创建一个新的构建目录并将它设为目标二进制路径。 - 添加额外参数来启用 MATLAB 支持和其他所需功能选项,比如 `-DBUILD_opencv_world=ON -DCMAKE_BUILD_TYPE=Release -DWITH_MATLAB=ON ...`. #### 执行编译命令 一旦所有配置都已完成,在终端中进入构建文件夹执行相应的 make 命令或利用 IDE 内置的功能来进行实际编译工作。对于 Windows 用户来说,则可以打开由 CMake 生成的工作区解决方案(.sln),并通过 VS 来管理整个流程。 #### 将生成的库集成至 MATLAB 成功完成后,应该可以在输出位置找到 `.mexw64`(Windows) 形式的共享对象文件以及其他静态链接所需的资源。这些都需要被正确放置以便于 MATLAB 加载它们作为外部函数接口的一部分。通常情况下这涉及到更新系统的 PATH 变量或是直接把相关材料复制粘贴到合适的位置下。 最后一步是在 MATLAB 中测试新建立起来的连接是否正常运作。可以通过编写简单的脚本来验证这一点,例如加载图像数据集并对之应用基本变换处理等基础任务。 ```matlab % 测试代码片段 addpath('path_to_your_matlab_interface'); img = imread('example.jpg'); % 替换成任意图片路径 imshow(img); waitforbuttonpress; ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boss-dog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值