小面包 面包多
简介
评论
作品封面
永久回看

[C++]在windows基于C++编程署yolov8的openvino模型cmake项目部演示源码

¥149
投诉
头像
FL1623863129 主要研究方向为:计算机软件开发、人工智能算法、图像处理、深度学习算法和应用、嵌入式部署、模型部署、环境安装、各种资源文件等
作品简介

【算法介绍】

在Windows系统上,基于C++编程署YOLOv8的OpenVINO模型,可以通过CMake项目来实现。YOLOv8是YOLO系列模型的比较新的版本,具有更高的检测精度和更快的推理速度。OpenVINO(Open Visual Inference and Neural Network Optimization)是英特尔开发的一款用于优化和部署深度学习模型的工具套件,能够显著提升模型在英特尔硬件上的推理性能。

首先,需要准备开发环境,包括安装OpenVINO Toolkit、CMake、OpenCV和C++编译器(如GCC或MSVC)。然后,从GitHub下载YOLOv8的OpenVINO C++部署项目代码。

接下来,将YOLOv8模型转换为OpenVINO支持的IR格式。这通常需要使用OpenVINO的Model Optimizer工具。转换完成后,使用CMake编译项目,并配置好项目的包含目录和库目录,确保能够正确链接到OpenVINO和OpenCV的库。

编译完成后,运行示例程序进行目标检测。示例程序会加载转换后的IR模型,并对输入的图像进行目标检测。通过OpenVINO的优化,模型在英特尔硬件上的推理速度得到了大幅提升,能够满足实时处理的需求。

此外,OpenVINO官方提供了丰富的示例代码和教程,涵盖了从模型优化到部署的各个环节。开发者可以参考这些示例和教程,快速上手OpenVINO,并基于YOLOv8模型实现高效的目标检测应用。

【测试环境】

vs2019

cmake==3.24.3

opencv==4.8.0

w_openvino_toolkit_windows_2024.3.0.16041.1e3b88e4e3f_x86_64

【效果展示】

 【部分实现代码】

#include 
#include "Yolov8OpenvinoDet.h"
#include "opencv2/opencv.hpp"
#include 
using namespace std;
using namespace cv;
 
void video_demo(std::string videopath,Yolov8OpenvinoDet& det)
{
    // 创建一个 VideoCapture 对象,参数 1为视频路径
    cv::VideoCapture cap(videopath);
 
    // 检查摄像头是否成功打开
    if (!cap.isOpened())
    {
        std::cerr << "Error: Could not open video." << std::endl;
        return;
    }
 
    cv::Mat frame;
    auto startTime = std::chrono::high_resolution_clock::now();
    int frameCount = 0;
    while (true)
    {
        // 读取一帧图像
        cap >> frame;
        frameCount++;
        // 检查是否成功读取帧
        if (frame.empty())
        {
            break;
        }
 
        auto results = det.Inference(frame);
        cv::Mat img = det.DrawImage(results, frame);
 
        auto currentTime = std::chrono::high_resolution_clock::now();
        auto elapsed = std::chrono::duration_cast(currentTime - startTime);
        if (elapsed.count() >= 2)
        {
            double fps = static_cast(frameCount) / elapsed.count();
            std::cout << "FPS: " << fps << std::endl;
            frameCount = 0;
            startTime = currentTime;
        }
            // 显示帧
            cv::imshow("yolov8 openvino demo", img);
 
            // 检查是否按下 'q' 键以退出循环
            if (cv::waitKey(10) == 'q')
            {
                break;
            }
        }
 
        // 释放摄像头
        cap.release();
        // 关闭所有窗口
        cv::destroyAllWindows();
    }
 
    int main(int argc, char *argv[])
    {
        // Yolov8OpenvinoDet det;
        // det.LoadWeights("E:\\official-model\\yolov8\\yolov8n_openvino_model\\yolov8n.xml");
        // cv::Mat image = cv::imread("E:\\person.jpg");
        // auto results = det.Inference(image);
        // cv::Mat img = det.DrawImage(results, image);
        // namedWindow("result", WINDOW_AUTOSIZE);
        // imshow("result", img);
        // waitKey(0);
        // destroyAllWindows();
 
 
        Yolov8OpenvinoDet det;
        det.LoadWeights("E:\\official-model\\yolov8\\yolov8n_openvino_model\\yolov8n.xml");
        video_demo("E:\\car.mp4",det);
 
        return 0;
    }

【运行步骤】

第一步:下载opencv和openvino的C++开发库,下载地址cmakelists.txt里面给出您也可以使用其他较新版本opencv或者openvino

第二步:将opencv和openvino的bin文件夹加入环境变量

第三步:修改CMakeLists.txt里面opencv和openvino自己对应目录

第四步:训练自己yolov8目标检测模型得到pytorch模型,并转成openvino模型,转换命令为

yolo export model=best.pt format=openvino

第五步:修改main.cpp视频路径和openvino模型路径

第六步:重新build和cmake,得到exe文件点击exe即可弹出窗口显示视频实时检测效果

【视频演示】

https://www.bilibili.com/video/BV1RuynYYEFU/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee


付费149元可获得

评论 推荐Ta

暂时还没有评论


头像
FL1623863129 主要研究方向为:计算机软件开发、人工智能算法、图像处理、深度学习算法和应用、嵌入式部署、模型部署、环境安装、各种资源文件等
关注
1 喜欢 17 关注 2056 粉丝 174521 作品

在您购买本平台付费作品前,请您认真阅读本声明内容。如果您对这份声明没有异议,则可以继续购买 >>>

  • 主页
  • 私信
登录或购买

[C++]在windows基于C++编程署yolov8的openvino模型cmake项目部演示源码

作品简介

【算法介绍】

在Windows系统上,基于C++编程署YOLOv8的OpenVINO模型,可以通过CMake项目来实现。YOLOv8是YOLO系列模型的比较新的版本,具有更高的检测精度和更快的推理速度。OpenVINO(Open Visual Inference and Neural Network Optimization)是英特尔开发的一款用于优化和部署深度学习模型的工具套件,能够显著提升模型在英特尔硬件上的推理性能。

首先,需要准备开发环境,包括安装OpenVINO Toolkit、CMake、OpenCV和C++编译器(如GCC或MSVC)。然后,从GitHub下载YOLOv8的OpenVINO C++部署项目代码。

接下来,将YOLOv8模型转换为OpenVINO支持的IR格式。这通常需要使用OpenVINO的Model Optimizer工具。转换完成后,使用CMake编译项目,并配置好项目的包含目录和库目录,确保能够正确链接到OpenVINO和OpenCV的库。

编译完成后,运行示例程序进行目标检测。示例程序会加载转换后的IR模型,并对输入的图像进行目标检测。通过OpenVINO的优化,模型在英特尔硬件上的推理速度得到了大幅提升,能够满足实时处理的需求。

此外,OpenVINO官方提供了丰富的示例代码和教程,涵盖了从模型优化到部署的各个环节。开发者可以参考这些示例和教程,快速上手OpenVINO,并基于YOLOv8模型实现高效的目标检测应用。

【测试环境】

vs2019

cmake==3.24.3

opencv==4.8.0

w_openvino_toolkit_windows_2024.3.0.16041.1e3b88e4e3f_x86_64

【效果展示】

 【部分实现代码】

#include 
#include "Yolov8OpenvinoDet.h"
#include "opencv2/opencv.hpp"
#include 
using namespace std;
using namespace cv;
 
void video_demo(std::string videopath,Yolov8OpenvinoDet& det)
{
    // 创建一个 VideoCapture 对象,参数 1为视频路径
    cv::VideoCapture cap(videopath);
 
    // 检查摄像头是否成功打开
    if (!cap.isOpened())
    {
        std::cerr << "Error: Could not open video." << std::endl;
        return;
    }
 
    cv::Mat frame;
    auto startTime = std::chrono::high_resolution_clock::now();
    int frameCount = 0;
    while (true)
    {
        // 读取一帧图像
        cap >> frame;
        frameCount++;
        // 检查是否成功读取帧
        if (frame.empty())
        {
            break;
        }
 
        auto results = det.Inference(frame);
        cv::Mat img = det.DrawImage(results, frame);
 
        auto currentTime = std::chrono::high_resolution_clock::now();
        auto elapsed = std::chrono::duration_cast(currentTime - startTime);
        if (elapsed.count() >= 2)
        {
            double fps = static_cast(frameCount) / elapsed.count();
            std::cout << "FPS: " << fps << std::endl;
            frameCount = 0;
            startTime = currentTime;
        }
            // 显示帧
            cv::imshow("yolov8 openvino demo", img);
 
            // 检查是否按下 'q' 键以退出循环
            if (cv::waitKey(10) == 'q')
            {
                break;
            }
        }
 
        // 释放摄像头
        cap.release();
        // 关闭所有窗口
        cv::destroyAllWindows();
    }
 
    int main(int argc, char *argv[])
    {
        // Yolov8OpenvinoDet det;
        // det.LoadWeights("E:\\official-model\\yolov8\\yolov8n_openvino_model\\yolov8n.xml");
        // cv::Mat image = cv::imread("E:\\person.jpg");
        // auto results = det.Inference(image);
        // cv::Mat img = det.DrawImage(results, image);
        // namedWindow("result", WINDOW_AUTOSIZE);
        // imshow("result", img);
        // waitKey(0);
        // destroyAllWindows();
 
 
        Yolov8OpenvinoDet det;
        det.LoadWeights("E:\\official-model\\yolov8\\yolov8n_openvino_model\\yolov8n.xml");
        video_demo("E:\\car.mp4",det);
 
        return 0;
    }

【运行步骤】

第一步:下载opencv和openvino的C++开发库,下载地址cmakelists.txt里面给出您也可以使用其他较新版本opencv或者openvino

第二步:将opencv和openvino的bin文件夹加入环境变量

第三步:修改CMakeLists.txt里面opencv和openvino自己对应目录

第四步:训练自己yolov8目标检测模型得到pytorch模型,并转成openvino模型,转换命令为

yolo export model=best.pt format=openvino

第五步:修改main.cpp视频路径和openvino模型路径

第六步:重新build和cmake,得到exe文件点击exe即可弹出窗口显示视频实时检测效果

【视频演示】

https://www.bilibili.com/video/BV1RuynYYEFU/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee


创作时间: