【快速推理】OpenCV三行代码部署YOLOv8全系模型

学习《OpenCV应用开发:入门、进阶与工程化实践》一书,学会本文所有技能就这么简单!
做真正的OpenCV开发者,从入门到入职,一步到位!
在这里插入图片描述

YOLOv8全系模型推理支持

大家好,OpenCV实验大师最新C++ SDK已经支持全系YOLOv8模型推理,基于OpenCV实现,支持CPU与GPU推理。支持对象检测、实例分割、姿态评估、旋转对象检测,模型部署推理,简单易容,只要三行代码即可调用,实现YOLOv8模型的C++ 推理部署,支持多种系统包括乌班图、Jetson、Win10与Win11上运行。

SDK效果演示

YOLOv8对象检测

YOLOv8对象检测C++ 调用代码示例

std::shared_ptr<YOLOv8Detector> detector(new YOLOv8Detector());
detector->initConfig("D:/python/my_yolov8_train_demo/yolov8n.onnx", 0.25, 640,640, false);
detector->detect(image, results)

在这里插入图片描述

YOLOv8实例分割

YOLOv8实例分割 C++ 调用代码示例:

std::shared_ptr<YOLOv8SegDetector> detector(new YOLOv8SegDetector());
detector->initConfig("D:/python/my_yolov8_train_demo/yolov8n.onnx", 0.4, 0.25f);
cv::VideoCapture capture("D:/bird_test/Pexels_Videos_2670.mp4");
cv::Mat frame;
std::vector<DetectResult> results;
while (true) {
    bool ret = capture.read(frame);
    if (frame.empty()) {
        break;
    }
    detector->detect(frame, results);
    for (DetectResult dr : results) {
        cv::Rect box = dr.box;
        cv::putText(frame, classNames[dr.classId], cv::Point(box.tl().x, box.tl().y - 10), cv::FONT_HERSHEY_SIMPLEX, .5, cv::Scalar(0, 0, 0));
    }
    cv::imshow("YOLOv8 实例分割 + OpenCV", frame);
    char c = cv::waitKey(1);
    if (c == 27) { // ESC 退出
        break;
    }
    // reset for next frame
    results.clear();
}

在这里插入图片描述

YOLOv8姿态评估

YOLOv8姿态评估 C++ 调用代码示例:

std::shared_ptr<YOLOv8PoseDetector> detector(new YOLOv8PoseDetector());
detector->initConfig("D:/python/my_yolov8_train_demo/yolov8n-pose.onnx", 0.25, 640,640, false);
cv::VideoCapture capture("D:/bird_test/hongyegu.mp4");
cv::Mat frame;
std::vector<YOLODetBox> results;
while (true) {
    bool ret = capture.read(frame);
    if (frame.empty()) {
        break;
    }
    detector->detect(frame, results);
    for (YOLODetBox dr : results) {
        cv::Rect box = dr.box;
        cv::putText(frame, classNames[0], cv::Point(box.tl().x, box.tl().y - 10), cv::FONT_HERSHEY_SIMPLEX, .5, cv::Scalar(0, 0, 0));
    }
    cv::imshow("OpenCV YOLOv8姿态评估", frame);
    char c = cv::waitKey(1);
    if (c == 27) { // ESC 退出
        break;
    }
    // reset for next frame
    results.clear();
}
return 0;

在这里插入图片描述

QTC++ 封装开发

然后我基于QT5 + OpenCV4.8 实现了全面界面化处理开发,知道自定义的YOLOv8对象检测一键部署,完成各种自定义对象检测功能,运行如下:

安全帽检测

在这里插入图片描述

无人机检测

在这里插入图片描述

细胞检测

在这里插入图片描述

姿态评估

在这里插入图片描述
QQ 读者交流 657875553

学习《OpenCV应用开发:入门、进阶与工程化实践》一书

做真正的OpenCV开发者,从入门到入职,一步到位!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是基于Java+OpenCV实现yolov8模型推理的步骤: 1.首先,你需要下载并解压缩yolov8模型的权重文件和配置文件。 2.接下来,你需要使用OpenCV加载模型并进行推理。你使用以下代码片段: ```java // 加载模型和配置文件 String modelConfiguration = "path/to/model/config/file"; String modelWeights = "path/to/model/weights/file"; Net net = Dnn.readNetFromDarknet(modelConfiguration, modelWeights); // 加载图像 Mat image = Imgcodecs.imread("path/to/image/file"); // 对图像进行预处理 Mat blob = Dnn.blobFromImage(image, 1/255.0, new Size(416, 416), new Scalar(0, 0, 0), true, false); // 将blob输入到网络中进行推理 net.setInput(blob); List<Mat> outputs = new ArrayList<>(); net.forward(outputs, getOutputNames(net)); // 处理输出结果 // outputs.get(0)包含了检测到的物体的类别、置信度和位置信息 // 可以使用以下代码获取输出结果 Mat detectionMat = outputs.get(0); int cols = detectionMat.cols(); int rows = detectionMat.rows(); for (int i = 0; i < rows; i++) { double[] data = detectionMat.row(i).clone(); int classId = (int) data[1]; double confidence = data[2]; if (confidence > CONF_THRESHOLD) { // 处理检测到的物体 } } ``` 其中,`path/to/model/config/file`和`path/to/model/weights/file`分别是yolov8模型的配置文件和权重文件的路径,`path/to/image/file`是待检测的图像的路径,`CONF_THRESHOLD`是置信度的阈值,可以根据需要进行调整。 3.最后,你可以根据需要对检测到的物体进行处理,例如绘制边界框、标签等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gloomyfish

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值