首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenCV4.8 C++ 一套代码实现三种平台YOLOv8部署

OpenCV4.8 C++ 一套代码实现三种平台YOLOv8部署

作者头像
OpenCV学堂
发布2024-03-04 13:52:23
发布2024-03-04 13:52:23
1.6K10
代码可运行
举报
运行总次数:0
代码可运行

微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识

OpenCV DNN模块

基于OpenCV DNN实现YOLOv8推理的好处就是一套代码就可以部署在Windows10系统、乌班图系统、Jetson的Jetpack系统,不用改任何代码,只需要辅助简单的CMake脚本即可。作者基于OpenCV4.8 DNN实现了两个推理类分别支持 OBB旋转对象检测与姿态评估,一键支持windows10、乌班图、Jetpack三个系统上推理部署。

OpenCV4.8安装测试

OpenCV安装与CMake脚本

乌班图系统下安装OpenCV4.8 C++ 看这里:

Ubuntu系统下编译OpenCV4.8源码记录

Jetson Nano系统下安装OpenCV4.8 C++ 看这里:

【操作技巧】Jetson Orin Nano的ubuntu port换镜像源与OpenCV4.8编译

安装好的以后的测试代码使用的CMake脚本如下:

代码语言:javascript
代码运行次数:0
运行
复制
cmake_minimum_required(VERSION 3.1)
project( chapter_one )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( chapter_one test.cpp )
target_link_libraries( chapter_one ${OpenCV_LIBS} )

测试运行代码:

代码语言:javascript
代码运行次数:0
运行
复制
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;
void video_demo();
int main(int argc, char** argv) {
  Mat image = imread("lena.jpg", IMREAD_UNCHANGED);
  namedWindow("input", WINDOW_AUTOSIZE);
  imshow("input", image);
  waitKey(0);
  destroyAllWindows();
  return 0;
}

运行测试结果如下:

YOLOv8部署与推理

基于封装的YOLOv8 OBB 旋转对象检测与姿态评估推理类API调用实现的推理演示测试代码

代码语言:javascript
代码运行次数:0
运行
复制
#include <yolov8_obb_opencv.h>
#include <iostream>
#include <fstream>

std::string label_map = "/home/zhigang/cppworkspace/dotav1.txt";
int main(int argc, char** argv) {
    std::vector<std::string> classNames;
    std::ifstream fp(label_map);
    std::string name;
    while (!fp.eof()) {
        getline(fp, name);
        if (name.length()) {
            classNames.push_back(name);
        }
    }
    fp.close();
    std::shared_ptr<YOLOv8ObbDetector> detector(new YOLOv8ObbDetector());
    detector->initConfig("/home/zhigang/cppworkspace/yolov8s-obb.onnx", 0.4f, 1024, 1024);
    cv::Mat frame = cv::imread("/home/zhigang/cppworkspace/plane_02.jpg");
    cv::imshow("input", frame);
    cv::waitKey();
    detector->detect(frame, classNames);
    cv::imshow("YOLOv8 OBB + OpenCV4.8", frame);
    cv::waitKey(0);
    cv::destroyAllWindows();
    return 0;
}

乌班图系统下运行结果:

Jetson Nano开发板上推理自定义数据的旋转对象检测模型 结果:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档