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

AI学习笔记三十二:YOLOv8-CPP-Inference测试(Linux版本)

若该文为原创文章,转载请注明原文出处。

主要介绍如何在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
​
​

后续想部署到自己的虚拟机上,并使用摄像头实时检测

如有侵权,或需要完整代码,请及时联系博主。

http://www.dtcms.com/a/283633.html

相关文章:

  • CDSS系统升级“可视化解释-智能反馈-临床语言“三位一体设计架构设计分析
  • 「Chrome 开发环境快速屏蔽 CORS 跨域限制详细教程」*
  • lua(xlua)基础知识点记录二
  • Oracle数据泵详解——让数据迁移像“点外卖”一样简单​
  • 数据库管理-第349期 Oracle DB 23.9新特性一览(20250717)
  • python与正则:前后向断言、分组,以及案例练习
  • Xss-labs 1-8关的初步通关
  • 【Linux系统】进程地址空间
  • 时序数据库选型指南 —— 为什么选择 Apache IoTDB?
  • Qt Quick 粒子系统详解
  • 数据呈现高阶技巧:散点图与桑基图的独特价值
  • 从零开始学 Linux 系统安全:基础防护与实战应用
  • 12.9 Mixtral-8x7B核心技术解密:如何用1/3参数实现4倍推理速度碾压LLaMA2?
  • 取消office word中的段落箭头标记
  • 多方案对比分析:后端数据加密策略及实践
  • 菜单权限管理
  • 【Linux】LVS(Linux virual server)
  • zabbix安装(docker-compose)
  • 若依框架开启注册功能全流程指南
  • I3C Host Adapter Pro+ (3)
  • 36.在列表或字典中查找匹配项
  • CrewAI与LangGraph:下一代智能体编排平台深度测评
  • 数据分析全流程指南:从明确目标到数据呈现的实操方法论
  • Kiro vs Cursor: AI IDE 终极对比指南
  • github不能访问怎么办
  • mac OS上docker安装zookeeper
  • 3t车用手动卧式千斤顶设计含8张CAD图纸PDF图
  • 有n棍棍子,棍子i的长度为ai,想要从中选出3根棍子组成周长尽可能长的三角形。请输出最大的周长,若无法组成三角形则输出0。
  • 优先队列的实现
  • 基础算法题