因为项目需要用OpenCV对yolov8模型进行推理,通过DNN模块,之前本地的OpenCV版本是4.5.4(好像安装完ROS2 humble之后系统就自带了opencv),加载onnx模型一直报错,网上查询到需要4.7以上,干脆直接升级到4.8.1了。
目录
- 1.源码下载
- 2.环境准备
- 3.源码编译
- 4.环境配置
- 5.测试验证
- 6.CMake中指定OpenCV版本
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/