以下是一个基本的用线程调用bytetrack做追踪且检测使用的是yolov5模型的C++代码:

#include <iostream>
#include <thread>
#include <opencv2/opencv.hpp>
#include "bytetrack.h"

using namespace std;
using namespace cv;

// 定义全局变量
bool g_bExit = false;

// 定义线程函数
void ThreadFunc() {
    // 加载模型
    bytetrack::ByteTrackConfig config;
    config.detect_model_path = "yolov5s.onnx";
    config.track_model_path = "byte_track.onnx";
    bytetrack::ByteTrack byteTrack(config);

    // 打开摄像头
    VideoCapture cap(0);
    if (!cap.isOpened()) {
        cout << "Failed to open camera!" << endl;
        return;
    }

    // 循环读取摄像头数据
    while (!g_bExit) {
        Mat frame;
        cap >> frame;

        // 进行检测和追踪
        vector<bytetrack::ObjectInfo> objects;
        byteTrack.DetectAndTrack(frame, objects);

        // 在图像中绘制检测框和追踪ID
        for (const auto& obj : objects) {
            rectangle(frame, obj.rect, Scalar(0, 0, 255), 2);
            putText(frame, to_string(obj.track_id), obj.rect.tl(), FONT_HERSHEY_SIMPLEX, 1, Scalar(0, 255, 0), 2);
        }

        // 显示图像
        imshow("frame", frame);
        waitKey(1);
    }
}

int main() {
    // 创建线程
    thread t(ThreadFunc);

    // 等待用户按下任意键退出
    waitKey(0);

    // 通知线程退出
    g_bExit = true;

    // 等待线程退出
    t.join();

    return 0;
}
给我一个用线程调用bytetrack做追踪的且检测使用的是yolov5模型的C++代码

原文地址: https://www.cveoy.top/t/topic/bS35 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录