Brak opisu

leon 348c9a585e update graph 4 tygodni temu
.vscode e8ee4536f9 添加plog日志库 4 tygodni temu
src 348c9a585e update graph 4 tygodni temu
workspace 8aa29ae33a 完善代码 4 tygodni temu
Makefile 670d9699e2 修改为输出到日志 4 tygodni temu
README.md a3beb29335 add readme 1 miesiąc temu

README.md

流水线视频识别

支持功能

  1. opencv 软解码
  2. nvcuvid 硬解码
  3. yolo 检测、关键点模型识别
  4. depth-adnything 深度模型识别
  5. bytetrack 目标追踪
  6. 结果绘制
  7. 识别后的视频保存
  8. 识别结果http推送
  9. 逻辑判断节点

使用示例

void test_yolo()
{
    OverflowStrategy stage = OverflowStrategy::Block;
    int max_size = 100;

    // std::vector<std::string> names = { "person", "clothes", "vest" };
    std::vector<std::string> names = { "person", "car", "close", "open" };
    // std::shared_ptr<GNode::StreamNode> src_node0   = std::make_shared<GNode::StreamNode>("src0", "rtsp://admin:lww123456@172.16.22.16:554/Streaming/Channels/201", 0, GNode::DecodeType::GPU);
    std::shared_ptr<GNode::StreamNode> src_node0   = std::make_shared<GNode::StreamNode>("src0", "carperson.mp4", 0, GNode::DecodeType::GPU);
    src_node0->set_skip_frame(1);

    std::shared_ptr<Infer> yolo_model = load("model/carperson.engine", ModelType::YOLOV5, names, 0, 0.25, 0.45);
    std::shared_ptr<GNode::InferNode> infer_node   = std::make_shared<GNode::InferNode>("yolov5");
    infer_node->set_model_instance(yolo_model, ModelType::YOLO11);

    std::shared_ptr<GNode::TrackNode> track_node     = std::make_shared<GNode::TrackNode>("tracker", "person", 30, 30);

    std::shared_ptr<GNode::DrawNode> draw_node     = std::make_shared<GNode::DrawNode>("draw_track");
    std::shared_ptr<GNode::RecordNode> record_node = std::make_shared<GNode::RecordNode>("record");
    record_node->set_record_path("result/result.mp4");
    record_node->set_fps(25);
    record_node->set_fourcc(cv::VideoWriter::fourcc('X', '2', '6', '4'));
    
    GNode::LinkNode(src_node0, infer_node, max_size, stage);
    GNode::LinkNode(infer_node, track_node, max_size, stage);
    GNode::LinkNode(track_node, draw_node, max_size, stage);
    GNode::LinkNode(draw_node, record_node, max_size, stage);
    record_node->start();
    draw_node->start();
    track_node->start();
    infer_node->start();
    src_node0->start();
    getchar();
}