若该文为原创文章,转载请注明原文出处。
主要介绍如何在Linux系统上安装和部署基于YOLOv8的C++推理项目
一、服务器准备
使用AutoDL平台租用服务器
AutoDL有git加速,可以自行启用
二、环境配件
1、检查Opencv版本
pkg-config --modversion opencv4
如果版本为4.5,则需升级为4.9,否则ONNX模型在加载时可能报错
2、检查CMake版本
cmake --version
如果没有安装
sudo apt install cmake
三、安装Opencv 4.9
运行脚本
chmod +x install_opencv_490_fresh.sh
./install_opencv_490_fresh.sh
脚本:
#!/bin/bashecho "=== Step 1: Installing dependencies ==="
apt update
apt install -y 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 libtbb-devecho "=== Step 2: Cloning OpenCV and opencv_contrib (version 4.9.0) ==="cd ~
rm -rf ~/opencv ~/opencv_contrib
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.gitcd opencv
git checkout 4.9.0
cd ../opencv_contrib
git checkout 4.9.0echo "=== Step 3: Configuring build with pkg-config generation ==="
cd ~/opencv
rm -rf build
mkdir build
cd buildcmake -D CMAKE_BUILD_TYPE=Release \-D CMAKE_INSTALL_PREFIX=/usr/local \-D CMAKE_EXTRA_MODULES_PATH=~/opencv_contrib/modules \-D BUILD_EXAMPLES=OFF \-D WITH_CUDA=OFF \-D OPENCV_GENERATE_PKGCONFIG=ON \..if [ $? -ne 0 ]; thenecho "CMake failed! Check the error log."exit 1
fiecho "=== Step 4: Building OpenCV ==="
make -j$(nproc)echo "=== Step 5: Installing OpenCV ==="
make install
ldconfigecho "=== Step 6: Done! Verifying installation ==="
/usr/local/bin/opencv_version
编译时间很长,耐心等待
验证
pkg-config --modversion opencv4
四、YOLOV8模型导出
git clone https://github.com/ultralytics/ultralytics.git
cd ultralytics
pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
导出ONNX模型(简化版本,兼容OpenCV DNN)
yolo export model=yolov8s.pt format=onnx opset=12 dynamic=False simplify=True
五、适配Linux无图形界面
将原来的显示代码替换为保存图片
替换前:
cv:imshow("Inference", frame);
cv::waitKey(-1);
替换后:
std::string outputPath = "output_" + std::to_string(i) + ".jpg";
cv::imwrite(outputPath, frame);
std::cout << "Saved result to: " << outputPath << std::endl;
六、修改文件
修改main.cpp文件,主要是修改路径和要不要启用GPU
七、CMakeLists.txt示例
# 设置最低CMake版本要求
cmake_minimum_required(VERSION 3.5)
# 项目名称和版本
project(Yolov8CPPInference VERSION 0.1)
#设置包含当前目录的头文件路径
set(CMAKE_INCLUDE_CURRENT_DIR ON)
#----------------- CUDA 设置 -----------------
# 设置 CUDA 路径(根据系统配置调整)
set(CUDA_TOOLKIT_ROOT_DIR "/usr/local/cuda")
# 查找并启用 CUDA (要求至少为CUDA 11)
find_package(CUDA 11 REQUIRED)
# 设置 CUDA 标准为 C++11
set(CMAKE_CUDA_STANDARD 11)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
# !CUDA
#-------------------------------------------
#----------------- OpenCV 设置 -----------------
# OpenCV
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
# !OpenCV
#-------------------------------------------
# 定义项目源文件
set(PROJECT_SOURCESmain.cpp
inference.hinference.cpp
)
# 生成可执行文件
add_executable(Yolov8CPPInference ${PROJECT_SOURCES})
# 链接 OpenCV 库
target_link_libraries(Yolov8CPPInference ${OpenCV_LIBS})
八、构建与运行项目
# 创建构建项目
mkdir build
# 进入构建目录
cd build
# 生成Makefile文件
cmake ..
# 编译项目
make
# 运行推理程序
./Yolov8CPPInference
后续想部署到自己的虚拟机上,并使用摄像头实时检测
如有侵权,或需要完整代码,请及时联系博主。