#include "nodes/base/base.hpp" #include "nodes/stream/streamNode.hpp" #include "nodes/infer/inferNode.hpp" #include "nodes/draw/drawNode.hpp" #include "nodes/httpPush/httpPush.hpp" int main() { // create trt model // std::vector names = { // "person", "bicycle", "car", "motorbike", "aeroplane", "bus", "train", "truck", // "boat", "traffic light", "fire hydrant", "stop sign", "parking meter", "bench", // "bird", "cat", "dog", "horse", "sheep", "cow", "elephant", "bear", "zebra", // "giraffe", "backpack", "umbrella", "handbag", "tie", "suitcase", "frisbee", // "skis", "snowboard", "sports ball", "kite", "baseball bat", "baseball glove", // "skateboard", "surfboard", "tennis racket", "bottle", "wine glass", "cup", // "fork", "knife", "spoon", "bowl", "banana", "apple", "sandwich", "orange", // "broccoli", "carrot", "hot dog", "pizza", "donut", "cake", "chair", "sofa", // "pottedplant", "bed", "diningtable", "toilet", "tvmonitor", "laptop", "mouse", // "remote", "keyboard", "cell phone", "microwave", "oven", "toaster", "sink", // "refrigerator", "book", "clock", "vase", "scissors", "teddy bear", "hair drier", // "toothbrush" // }; std::vector names = { "person", "clothes", "vest" }; std::shared_ptr src_node0 = std::make_shared("src0", "rtsp://admin:lww123456@172.16.22.16:554/Streaming/Channels/101", 0, Node::DecodeType::GPU); src_node0->set_skip_frame(10); std::shared_ptr src_node1 = std::make_shared("src1", "rtsp://admin:lww123456@172.16.22.16:554/Streaming/Channels/201", 0, Node::DecodeType::GPU); src_node1->set_skip_frame(10); std::shared_ptr src_node2 = std::make_shared("src2", "rtsp://admin:lww123456@172.16.22.16:554/Streaming/Channels/301", 0, Node::DecodeType::GPU); src_node2->set_skip_frame(10); std::shared_ptr model = load("model/yolo11s.engine", ModelType::YOLO11, names, 0, 0.25, 0.45); std::shared_ptr infer_node = std::make_shared("infer"); infer_node->set_model_instance(model); std::shared_ptr draw_node = std::make_shared("draw"); std::shared_ptr push_node = std::make_shared("push", "172.16.20.168", 8080, "/push"); Node::LinkNode(src_node0, infer_node); Node::LinkNode(src_node1, infer_node); Node::LinkNode(src_node2, infer_node); Node::LinkNode(infer_node, draw_node); Node::LinkNode(draw_node, push_node); push_node->start(); draw_node->start(); infer_node->start(); src_node0->start(); src_node1->start(); src_node2->start(); getchar(); return 0; } // TODO: 模型多路复用 // TODO: 通过配置文件创建 pipeline // TODO:日志系统 // TODO: 结果推送接口 http mqtt ... // TODO: 电子围栏