基于OpenCV DNN实现YOLOv8的模型部署与推理演示

描述

OpenCV DNN模块

基于OpenCV DNN实现YOLOv8推理的好处就是一套代码就可以部署在Windows10系统、乌班图系统、Jetson的Jetpack系统,不用改任何代码,只需要辅助简单的CMake脚本即可。

作者基于OpenCV4.8 DNN实现了两个推理类分别支持 OBB旋转对象检测与姿态评估,一键支持windows10、乌班图、Jetpack三个系统上推理部署。

OpenCV4.8安装测试

OpenCV安装与CMake脚本

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

 

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} )

 

测试运行代码:

 

#include 
#include 


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;
}
运行测试结果如下:

 

OpenCV

YOLOv8部署与推理

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

 

#include 
#include 
#include 

std::string label_map = "/home/zhigang/cppworkspace/dotav1.txt";
int main(int argc, char** argv) {
    std::vector 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 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;
}
乌班图系统下运行结果:

 

OpenCV

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

OpenCV

真的是同一套代码,只需要修改一下客户端调用的路径,就可以实现三种系统平台上的YOLOv8模型部署与推理演示。


 

审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分