當前位置: 妍妍網 > 碼農

OpenCV4.8 C++ 實作YOLOv8 OBB旋轉物件檢測 推理演示

2024-02-21碼農

點選上方 藍字 關註我們

微信公眾號: OpenCV學堂

關註獲取更多電腦視覺與深度學習知識

YOLOv8 OBB介紹

YOLOv8框架在在支持分類、物件檢測、例項分割、姿態評估的基礎上更近一步,現已經支持旋轉物件檢測(OBB),基於DOTA數據集,支持航拍影像的15個類別物件檢測,包括車輛、船只、典型各種場地等。包含2800多張影像、18W個例項物件。

不同尺度的YOLOv8 OBB模型的精度與輸入格式列表如下:

匯出與預測

基於YOLOv8命令列推理測試:

## 匯出yolo export model=yolov8s-obb.pt format=onnx## 推理yolo obb predict model=yolov8n-obb.pt source=plane_03.jpg

輸入與輸出結構說明

基於OpenCV4.8 DNN與ONNX格式模型直接預測推理,首先看一下ONNX格式的YOLOv8-OBB輸入與輸出格式:

OpenCV4.8 C++ 推理演示

我把YOLOv8 OBB C++推理封裝成一個類YOLOv8ObbDetector,客戶端呼叫只有參照表頭檔,然後三行程式碼即可實作YOLOv8旋轉物件檢測C++ 的推理,程式碼演示如下:

#include<yolov8_obb_opencv.h>
#include<iostream>
#include<fstream>
std::string label_map = "D:/python/my_yolov8_train_demo/dotav1.txt";
intmain(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("D:/python/my_yolov8_train_demo/yolov8s-obb.onnx"0.4f10241024);
cv::Mat frame = cv::imread("D:/python/my_yolov8_train_demo/wh300.jpg");
detector->detect(frame, classNames);
cv::imshow("YOLOv8 旋轉物件檢測 + OpenCV4.8", frame);
cv::waitKey(0);
cv::destroyAllWindows();
return0;
}

執行結果如下:

掃碼學習YOLOv8視訊課程

推薦閱讀

好書推薦

【OpenCV套用開發:入門、進階與工程化實踐】 全書共計16個章節,重點聚焦OpenCV開發常用模組詳解與工程化開發實踐,提升OpenCV套用開發能力,助力讀者成為OpenCV開發者,同時包含深度學習模型訓練與部署加速等知識,幫助OpenCV開發者進一步拓展技能地圖,滿足工業計畫落地所需技能提升。購買請點連結:

https://item.jd.com/10092255924058.html

學習課程有專屬答疑群

負責貼身答疑解惑

讀者專屬QQ群 :657875553

進群暗號:OpenCV4讀者