Ver Fonte

add readme

leon há 1 mês atrás
pai
commit
a3beb29335
1 ficheiros alterados com 51 adições e 0 exclusões
  1. 51 0
      README.md

+ 51 - 0
README.md

@@ -0,0 +1,51 @@
+# 流水线视频识别
+
+## 支持功能
+1. opencv 软解码
+2. nvcuvid 硬解码
+3. yolo 检测、关键点模型识别
+4. depth-adnything 深度模型识别
+5. bytetrack 目标追踪
+6. 结果绘制
+7. 识别后的视频保存
+8. 识别结果http推送
+9. 逻辑判断节点
+
+
+## 使用示例
+```c++
+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();
+}
+```