c++ opencv调用yolov5 onnx模型

// ReadOnnx.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include<opencv2/opencv.hpp>
#include<opencv2/dnn/dnn.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<vector>
#include <time.h>  
using namespace std;
using namespace cv;
using namespace dnn;

inline float sigmoid(float x)
{
    return 1.f / (1.f + exp(-x));
}

void drawPred(int classId, float conf, int left, int top, int right, int bottom, cv::Mat& frame,const std::vector<string>& classes)
{
    cv::rectangle(frame, cv::Point(left, top), cv::Point(right, bottom), cv::Scalar(0, 255, 0), 3);
    std::string label = cv::format("%.2f", conf);
    if (!classes.empty()) {
        CV_Assert(classId < (int)classes.size());
        label = classes[classId] + ": " + label;
    }
    int baseLine;
    cv::Size labelSize = cv::getTextSize(label, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, &baseLine);
    top = std::max(top, labelSize.height);
    cv::rectangle(frame, cv::Point(left, top - round(1.5 * labelSize.height)), cv::Point(left + round(1.5 * labelSize.width), top + baseLine), cv::Scalar(0, 255, 0), cv::FILLED);
    cv::putText(frame, label, cv::Point(left, top), cv::FONT_HERSHEY_SIMPLEX, 0.75, cv::Scalar(), 1);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 很抱歉,我不太懂程式範例的概念,但是我了解YOLO v5的架構,它是一種基於深度學習的物體檢測演算法。如果您想在C語言中使用YOLO v5,您可以參考TensorFlow C API,它可以將TensorFlow模型轉換為C語言。 ### 回答2: 要给出Yolov5 ONNX程序的C语言示例,首先需要先理解ONNX的概念和Yolov5的工作原理。 ONNX是一个开放的神经网络交换格式,它提供了一种标准的方式来描述深度学习模型,使得模型可以在不同的深度学习框架之间进行迁移和共享。Yolov5是一个用于目标检测的深度学习模型,能够快速准确地检测图像中的对象。 为了在C语言中使用Yolov5 ONNX模型,你需要以下步骤: 1. 安装相应的库和依赖项:你需要安装OpenCVONNX Runtime等库和依赖项,以便在C语言中加载和运行Yolov5 ONNX模型。 2. 加载ONNX模型:使用ONNX Runtime库的函数来加载Yolov5 ONNX模型并创建一个模型实例。 3. 处理输入图像:读取要检测的图像并进行预处理,包括调整大小、归一化等操作,以便与模型的输入要求匹配。 4. 运行模型:将预处理后的图像输入到Yolov5 ONNX模型中,通过调用模型实例的函数进行推断,得到目标检测的结果。 5. 解析结果:解析模型输出,获取目标检测的结果,包括检测到的对象的类别、形状和位置等信息。 6. 后处理结果:根据需要对结果进行后处理,例如筛选阈值、非最大抑制等操作,以得到最终的目标检测结果。 这只是一个简单的示例框架,具体的实现细节和代码会更加复杂。在实际中,你可能需要查阅相关的文档和示例代码来帮助你完成这个任务。 ### 回答3: 以下是一份使用C程式語言的yolov5 onnx範例: #include <stdio.h> #include <stdlib.h> int main() { // 載入yolov5 onnx模型 // 定義輸入圖像 // 執行物件偵測 // 獲取偵測結果 // 顯示偵測結果 return 0; } 在這個範例中,首先需要載入yolov5 onnx模型,可以使用合適的函式庫或工具來實現。接著,需要定義一個輸入圖像,並將圖像的數據傳入物件偵測算法中進行處理。執行物件偵測後,可以獲取偵測結果,例如物件類別、邊界框座標等等。最後,可以使用顯示函式或工具將偵測結果呈現出來,以供使用者觀察和使用。 請注意,這僅是一個簡單的範例,實際實現yolov5 onnx模型的程式可能需要使用更多函式庫和算法來達到最佳效果。此外,由於程式碼的實現方式可能因不同的編譯環境而有所差異,請根據具體情況進行調整和優化。 希望以上內容能對您有所幫助。如有任何其他問題,請隨時提出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值