微信公众号: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脚本如下:
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 <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调用实现的推理演示测试代码
#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开发板上推理自定义数据的旋转对象检测模型 结果: