[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-sherlockchou86--VideoPipe":3,"tool-sherlockchou86--VideoPipe":62},[4,18,28,36,45,54],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":24,"last_commit_at":25,"category_tags":26,"status":17},9989,"n8n","n8n-io\u002Fn8n","n8n 是一款面向技术团队的公平代码（fair-code）工作流自动化平台，旨在让用户在享受低代码快速构建便利的同时，保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点，帮助用户轻松连接 400 多种应用与服务，实现复杂业务流程的自动化。\n\nn8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”：既可以通过直观的可视化界面拖拽节点搭建流程，也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外，n8n 原生集成了基于 LangChain 的 AI 能力，支持用户利用自有数据和模型构建智能体工作流。在部署方面，n8n 提供极高的自由度，支持完全自托管以保障数据隐私和控制权，也提供云端服务选项。凭借活跃的社区生态和数百个现成模板，n8n 让构建强大且可控的自动化系统变得简单高效。",184740,2,"2026-04-19T23:22:26",[16,14,13,15,27],"插件",{"id":29,"name":30,"github_repo":31,"description_zh":32,"stars":33,"difficulty_score":10,"last_commit_at":34,"category_tags":35,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":24,"last_commit_at":42,"category_tags":43,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",161147,"2026-04-19T23:31:47",[14,13,44],"语言模型",{"id":46,"name":47,"github_repo":48,"description_zh":49,"stars":50,"difficulty_score":51,"last_commit_at":52,"category_tags":53,"status":17},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[13,27],{"id":55,"name":56,"github_repo":57,"description_zh":58,"stars":59,"difficulty_score":24,"last_commit_at":60,"category_tags":61,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[14,15,13],{"id":63,"github_repo":64,"name":65,"description_en":66,"description_zh":67,"ai_summary_zh":68,"readme_en":69,"readme_zh":70,"quickstart_zh":71,"use_case_zh":72,"hero_image_url":73,"owner_login":74,"owner_name":75,"owner_avatar_url":76,"owner_bio":77,"owner_company":78,"owner_location":78,"owner_email":78,"owner_twitter":78,"owner_website":79,"owner_url":80,"languages":81,"stars":98,"forks":99,"last_commit_at":100,"license":101,"difficulty_score":102,"env_os":103,"env_gpu":104,"env_ram":105,"env_deps":106,"category_tags":119,"github_topics":122,"view_count":24,"oss_zip_url":78,"oss_zip_packed_at":78,"status":17,"created_at":143,"updated_at":144,"faqs":145,"releases":175},9877,"sherlockchou86\u002FVideoPipe","VideoPipe","A cross-platform video structuring (video analysis) framework. If you find it helpful, please give it a star: )  跨平台的视频结构化（视频分析）框架，觉得有帮助的请给个星星 : ) ","VideoPipe 是一个用 C++ 编写的跨平台视频结构化与分析框架，旨在帮助开发者像搭积木一样灵活构建视频处理应用。它通过“管道”机制将视频读取、解码、算法推理、目标跟踪及行为分析等环节串联起来，每个环节都是独立的插件节点，可按需自由组合。\n\n在视频智能分析领域，现有的高性能方案往往依赖特定硬件厂商（如 NVIDIA 或华为）且不开源，学习门槛较高。VideoPipe 的出现解决了这一痛点，它以极少的依赖和较低的学习曲线，实现了在任意平台上的便捷部署，让视频分析不再受限于特定生态。\n\n这款工具非常适合需要开发定制化视频应用的工程师和研究人员，尤其适用于交通监控、安防预警、图像检索及行为分析等场景。无论是检测车辆违章、识别特定人脸，还是集成最新的多模态大语言模型（mLLM），VideoPipe 都能提供强力支持。\n\n其核心技术亮点在于高度的灵活性与兼容性：支持 RTSP、RTMP 等多种流媒体协议及硬件加速解码；推理后端可自由选择 OpenCV::DNN、TensorRT、ONNXRuntime 等；同时允许用户轻松嵌入自定义业务逻辑或将结构化数据推送至云端。如果你希望快速原型验证或","VideoPipe 是一个用 C++ 编写的跨平台视频结构化与分析框架，旨在帮助开发者像搭积木一样灵活构建视频处理应用。它通过“管道”机制将视频读取、解码、算法推理、目标跟踪及行为分析等环节串联起来，每个环节都是独立的插件节点，可按需自由组合。\n\n在视频智能分析领域，现有的高性能方案往往依赖特定硬件厂商（如 NVIDIA 或华为）且不开源，学习门槛较高。VideoPipe 的出现解决了这一痛点，它以极少的依赖和较低的学习曲线，实现了在任意平台上的便捷部署，让视频分析不再受限于特定生态。\n\n这款工具非常适合需要开发定制化视频应用的工程师和研究人员，尤其适用于交通监控、安防预警、图像检索及行为分析等场景。无论是检测车辆违章、识别特定人脸，还是集成最新的多模态大语言模型（mLLM），VideoPipe 都能提供强力支持。\n\n其核心技术亮点在于高度的灵活性与兼容性：支持 RTSP、RTMP 等多种流媒体协议及硬件加速解码；推理后端可自由选择 OpenCV::DNN、TensorRT、ONNXRuntime 等；同时允许用户轻松嵌入自定义业务逻辑或将结构化数据推送至云端。如果你希望快速原型验证或构建轻量级视频分析系统，VideoPipe 是一个值得尝试的开源选择。","\u003Cp style=\"\" align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_cee2140e745d.png\" alt=\"Logo\" width=\"75%\">\n\u003C\u002Fp>\n\u003Cp style=\"margin:0px\" align=\"center\">\n  \u003Ca href='.\u002FREADME_CN.md'>中文README\u003C\u002Fa> | \u003Ca href='http:\u002F\u002Fwww.videopipe.cool'>VideoPipe Website \u003C\u002Fa> | \u003Ca href='http:\u002F\u002Fwww.videopipe.cool\u002Findex.php\u002F2024\u002F09\u002F11\u002Fvideopipetutorials\u002F'>VideoPipe tutorials(视频教程) \u003C\u002Fa>\n\u003C\u002Fp>\n\u003Cp style=\"margin:0px\" align=\"center\">\n  \u003Ca href='https:\u002F\u002Fgithub.com\u002Fsherlockchou86\u002Fone-yolo'>🚀one-yolo, make all in one for Yolo integration. All Tasks, All Versions, All Runtimes. 🚀\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n## Introduction\n\n`VideoPipe` is a framework for video analysis and structuring, written in C++. It has minimal dependencies and is easy to use. It operates like a pipeline, where each node is independent and can be combined in various ways. `VideoPipe` can be used to build different types of video analysis applications, suitable for scenarios such as video structuring, image search, face recognition, and behavior analysis in traffic\u002Fsecurity fields (such as traffic incident detection).\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_93f6241c93b5.gif)\n\n## Advantages and Features\n\n`VideoPipe` is similar to NVIDIA's DeepStream and Huawei's mxVision frameworks, but it is easier to use and more portable.\n\nHere is a comparison table:\n\n| **Name**      | **Open Source** | **Learning Curve** | **Supported Platforms** | **Performance** | **Third-Party Dependencies** |\n|---------------|-----------------|---------------------|--------------------------|-----------------|-------------------------------|\n| DeepStream    | No              | High                | NVIDIA only              | High            | Many                          |\n| mxVision      | No              | High                | Huawei only              | High            | Many                          |\n| VideoPipe     | Yes             | Low                 | Any platform             | Medium          | Few                           |\n\n`VideoPipe` uses a plugin-oriented coding style that allows for flexible configuration based on different needs. We can use independent plugins (referred to as `Node` types within the framework) to build various types of video analysis applications. You only need to prepare the model and understand how to parse its output. Inference can be implemented using different backends, such as OpenCV::DNN (default), TensorRT, PaddleInference, ONNXRuntime, or any other backend you prefer.\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_84d8d3827290.png)\n\n## Demonstration\n\nhttps:\u002F\u002Fgithub.com\u002Fsherlockchou86\u002Fvideo_pipe_c\u002Fassets\u002F13251045\u002Fb1289faa-e2c7-4d38-871e-879ae36f6d50\n\nTo watch in fullscreen, use the button in the bottom right corner of the player，[more video demos](.\u002FSAMPLES.md)\n\n## Functions\n\n`VideoPipe` is a framework that simplifies the integration of computer vision algorithm models. It is important to note that it is not a deep learning framework like TensorFlow or TensorRT. The main features of `VideoPipe` are as follows:\n\n- **Stream Reading**: Supports mainstream video stream protocols such as UDP, RTSP, RTMP, file, and application. It also supports image reading.\n- **Video Decoding**: Supports video and image decoding based on OpenCV\u002FGStreamer (with hardware acceleration).\n- **Algorithm Inference**: Supports multi-level inference based on deep learning algorithms, such as object detection, image classification, feature extraction, and image generation. It also supports the integration of traditional image algorithms. **Support mLLM(Multimodal Large Language Model) integration now (update 2025\u002F8\u002F12)**\n- **Object Tracking**: Supports object tracking, such as IOU and SORT tracking algorithms.\n- **Behavior Analysis (BA)**: Supports behavior analysis based on tracking, such as traffic behavior detection like line-crossing, parking, and violations.\n- **Business Logic**: Allows integration of any custom business logic, which can be closely related to specific business requirements.\n- **Data Proxy**: Supports pushing structured data (in JSON, XML, or custom formats) to the cloud, files, or other third-party platforms via methods like Kafka or Socket.\n- **Recording**: Supports video recording for specific time periods and capturing screenshots of specific frames, with the ability to save them as files.\n- **On-Screen Display (OSD)**: Supports overlaying structured data and business logic processing results onto frames.\n- **Video Encoding**: Supports video and image encoding based on OpenCV\u002FGStreamer (with hardware acceleration).\n- **Stream Pushing**: Supports mainstream video stream protocols such as UDP, RTSP, RTMP, file, and application. It also supports image streaming.\n\n## Getting Started Quickly\n\n### Dependencies\n\nPlatforms\n- Ubuntu 18.04 x86_64 NVIDIA rtx\u002Ftesla GPUs\n- Ubuntu 18.04 aarch64 NVIDIA jetson serials device，tx2 tested\n- Ubuntu 22.04 x86_64 by VMware virtual machine on Windows 10, pure CPUs\n- Ubuntu 18.04 x86_64 Cambrian MLU serials device, MLU 370 tested (code not provided)\n- Ubuntu 18.04 aarch64 Rockchip RK35** serials device, RK3588 tested (code not provided)\n- Ubuntu 22.04 aarch64 Ascend 310\u002F910 serials device, Atlas 300I-Pro tested (code not provided)\n- Wait for your test\n\nBasics\n- C++ 17\n- OpenCV >= 4.6\n- GStreamer 1.14.5 (Required by OpenCV)\n- GCC >= 7.5\n\nOptional, if you need to implement your own inference backend or use a backend other than `opencv::dnn`.\n- CUDA\n- TensorRT\n- Paddle Inference\n- ONNX Runtime\n- mLLM（Ollama\u002FvLLM\u002FOpenAI-compatible API Services）\n- Anything you like\n\n[how to install CUDA and TensorRT](.\u002Fthird_party\u002Ftrt_vehicle\u002FREADME.md)\n\n[how to install Paddle_Inference](.\u002Fthird_party\u002Fpaddle_ocr\u002FREADME.md)\n\n### Compilation and Debugging\n\n1. run `git clone https:\u002F\u002Fgithub.com\u002Fsherlockchou86\u002FVideoPipe.git`\n2. run `cd VideoPipe`\n3. run `mkdir build && cd build`\n4. run `cmake ..`\n5. run `make -j8`\n\nAfter compilation, all library files are stored in `build\u002Flibs`, and all sample executables are located in `build\u002Fbin`. During Step 4, you can add some compilation options:\n\n- `-DVP_WITH_CUDA=ON` (Compile CUDA-related features; default is OFF)\n- `-DVP_WITH_TRT=ON` (Compile TensorRT-related features and samples; default is OFF)\n- `-DVP_WITH_PADDLE=ON` (Compile PaddlePaddle-related features and samples; default is OFF)\n- `-DVP_WITH_KAFKA=ON` (Compile Kafka-related features and samples; default is OFF)\n- `-DVP_WITH_LLM=ON` (Compile LLM-related features and samples; default is OFF)\n- `-DVP_BUILD_COMPLEX_SAMPLES=ON` (Compile advanced samples; default is OFF)\n\nFor example, to enable CUDA and TensorRT modules, you can run:\n```bash\ncmake -DVP_WITH_CUDA=ON -DVP_WITH_TRT=ON ..\n```\nIf you run just:\n```bash\ncmake ..\n```\nall code will be executed on the CPU.\n\nTo run the compiled samples, first download the model files and test data:\n\n1. [Google Drive - Download test files and models](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1v9dVcR6xttUTB-WPsH3mZ_ZZMzD4wG-v?usp=sharing)\n2. [Baidu Drive - Download test files and models](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1jr2nBnEDmuNaM5DiMjbC0g?pwd=nf53)\n\nPlace the downloaded directory (named `vp_data`) in any location (e.g., `\u002Froot\u002Fabc`). Then, run the sample in the same directory where `vp_data` is located. For example, execute the command:\n\n```bash\n[path to VideoPipe]\u002Fbuild\u002Fbin\u002F1-1-1_sample\n```\nat `\u002Froot\u002Fabc`.\n\n**Note**: The `.\u002Fthird_party\u002F` directory contains independent projects. Some are header-only libraries directly referenced by VideoPipe, while others include CPP files that can be compiled or run independently. VideoPipe depends on these libraries, and they will be automatically compiled during the VideoPipe build process. These libraries also contain their own samples; for specific usage instructions, refer to the README files in the corresponding subdirectories.\n\n### How to use\n\nHere’s a guide on how to build and run a sample pipeline with `VideoPipe`. You can either compile `VideoPipe` as a library and link it, or directly include the source code and compile the entire application.\n\nBelow is a sample code demonstrating how to construct a pipeline and run it. Please make sure to update the file paths in the code accordingly:\n\n```c++\n#include \"..\u002Fnodes\u002Fvp_file_src_node.h\"\n#include \"..\u002Fnodes\u002Finfers\u002Fvp_yunet_face_detector_node.h\"\n#include \"..\u002Fnodes\u002Finfers\u002Fvp_sface_feature_encoder_node.h\"\n#include \"..\u002Fnodes\u002Fosd\u002Fvp_face_osd_node_v2.h\"\n#include \"..\u002Fnodes\u002Fvp_screen_des_node.h\"\n#include \"..\u002Fnodes\u002Fvp_rtmp_des_node.h\"\n#include \"..\u002Futils\u002Fanalysis_board\u002Fvp_analysis_board.h\"\n\n\u002F*\n* Name: 1-1-N Sample\n* Complete code located at: samples\u002F1-1-N_sample.cpp\n* Functionality: 1 video input, 1 video analysis task (face detection and recognition), 2 outputs (screen display\u002FRTMP stream)\n*\u002F\n\nint main() {\n    VP_SET_LOG_INCLUDE_CODE_LOCATION(false);\n    VP_SET_LOG_INCLUDE_THREAD_ID(false);\n    VP_LOGGER_INIT();\n\n    \u002F\u002F 1. Create nodes\n    \u002F\u002F Video Source Node\n    auto file_src_0 = std::make_shared\u003Cvp_nodes::vp_file_src_node>(\"file_src_0\", 0, \".\u002Ftest_video\u002F10.mp4\", 0.6);\n    \n    \u002F\u002F 2. Model Inference Nodes\n    \u002F\u002F First-level inference: Face detection\n    auto yunet_face_detector_0 = std::make_shared\u003Cvp_nodes::vp_yunet_face_detector_node>(\"yunet_face_detector_0\", \".\u002Fmodels\u002Fface\u002Fface_detection_yunet_2022mar.onnx\");\n    \u002F\u002F Second-level inference: Face recognition\n    auto sface_face_encoder_0 = std::make_shared\u003Cvp_nodes::vp_sface_feature_encoder_node>(\"sface_face_encoder_0\", \".\u002Fmodels\u002Fface\u002Fface_recognition_sface_2021dec.onnx\");\n    \n    \u002F\u002F 3. OSD Node\n    \u002F\u002F Draw results on frames\n    auto osd_0 = std::make_shared\u003Cvp_nodes::vp_face_osd_node_v2>(\"osd_0\");\n    \n    \u002F\u002F Screen Display Node\n    auto screen_des_0 = std::make_shared\u003Cvp_nodes::vp_screen_des_node>(\"screen_des_0\", 0);\n    \u002F\u002F RTMP Stream Node\n    auto rtmp_des_0 = std::make_shared\u003Cvp_nodes::vp_rtmp_des_node>(\"rtmp_des_0\", 0, \"rtmp:\u002F\u002F192.168.77.60\u002Flive\u002F10000\");\n\n    \u002F\u002F Build the pipeline by linking the nodes\n    yunet_face_detector_0->attach_to({file_src_0});\n    sface_face_encoder_0->attach_to({yunet_face_detector_0});\n    osd_0->attach_to({sface_face_encoder_0});\n\n    \u002F\u002F Split the pipeline automatically to display results on screen and stream via RTMP\n    screen_des_0->attach_to({osd_0});\n    rtmp_des_0->attach_to({osd_0});\n\n    \u002F\u002F Start the pipeline\n    file_src_0->start();\n\n    \u002F\u002F Visualize the pipeline\n    vp_utils::vp_analysis_board board({file_src_0});\n    board.display();\n}\n```\n\n**Note**: Running this code will show three displays:\n1. **Pipeline Status**: A live update of the pipeline’s status.\n2. **Screen Output**: The GUI display showing results.\n3. **RTMP Output**: The streaming output available at the specified RTMP URL.\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_e9aff6fc4e17.png)\n\n\n### Prototype Examples\n|ID|Sample|Screenshot|\n|--|--|--|\n|1|face_tracking_sample|![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_58e93595333f.png)|\n|2|vehicle_tracking_sample|![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_199e41b62662.png)|\n|3|mask_rcnn_sample|![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_3d45a984c86c.png)|\n|4|openpose_sample|![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_7d3ca0ceaae1.png)|\n|5|face_swap_sample|![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_86822fe3b816.png)|\n|6|mllm_analyse_sample|![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_9ff44201bc35.png)|\n\nA total of over 40 prototype examples are available. [Click here](.\u002FSAMPLES.md) to view more.\n\n## Read More\n- [Sample Code](.\u002Fsamples)\n- [Node Table](.\u002Fnodes\u002FREADME.md)\n- [How VideoPipe Works](.\u002Fdoc\u002Fabout.md)\n- [Development Environment For Reference](.\u002Fdoc\u002Fenv.md)\n\n## WeChat Discussion Group\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_66bc08a6ebcd.png)\n\n## Thanks\n\n\u003Ca href=\"https:\u002F\u002Fhellogithub.com\u002Frepository\u002F4284d29e778642a4a51a471ab1eae6f0\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fapi.hellogithub.com\u002Fv1\u002Fwidgets\u002Frecommend.svg?rid=4284d29e778642a4a51a471ab1eae6f0&claim_uid=hBZTk0E2RAzJKyq\" alt=\"Featured｜HelloGitHub\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" \u002F>\u003C\u002Fa>\n","\u003Cp style=\"\" align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_cee2140e745d.png\" alt=\"Logo\" width=\"75%\">\n\u003C\u002Fp>\n\u003Cp style=\"margin:0px\" align=\"center\">\n  \u003Ca href='.\u002FREADME_CN.md'>中文README\u003C\u002Fa> | \u003Ca href='http:\u002F\u002Fwww.videopipe.cool'>VideoPipe 官网 \u003C\u002Fa> | \u003Ca href='http:\u002F\u002Fwww.videopipe.cool\u002Findex.php\u002F2024\u002F09\u002F11\u002Fvideopipetutorials\u002F'>VideoPipe 教程(视频教程) \u003C\u002Fa>\n\u003C\u002Fp>\n\u003Cp style=\"margin:0px\" align=\"center\">\n  \u003Ca href='https:\u002F\u002Fgithub.com\u002Fsherlockchou86\u002Fone-yolo'>🚀one-yolo，让 YOLO 集成一步到位。所有任务、所有版本、所有运行时环境，一应俱全。🚀\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n## 简介\n\n`VideoPipe` 是一个用 C++ 编写的视频分析与结构化框架，依赖极少且易于使用。它采用流水线式架构，每个节点相互独立，可以灵活组合。`VideoPipe` 可用于构建各类视频分析应用，适用于视频结构化、图像搜索、人脸识别以及交通\u002F安防领域的行为分析（如交通事件检测）等场景。\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_93f6241c93b5.gif)\n\n## 优势与特性\n\n`VideoPipe` 类似于 NVIDIA 的 DeepStream 和华为的 mxVision 框架，但使用起来更加简单，移植性也更强。\n\n以下是对比表格：\n\n| **名称**      | **开源** | **学习曲线** | **支持平台** | **性能** | **第三方依赖** |\n|---------------|----------|--------------|--------------|----------|----------------|\n| DeepStream    | 否       | 高           | 仅 NVIDIA    | 高       | 多             |\n| mxVision      | 否       | 高           | 仅华为       | 高       | 多             |\n| VideoPipe     | 是       | 低           | 任意平台     | 中       | 少             |\n\n`VideoPipe` 采用插件化的编程风格，可根据不同需求灵活配置。我们可以通过独立的插件（在框架中称为“Node”类型）来构建各种类型的视频分析应用。用户只需准备好模型并了解其输出解析方式即可。推理部分可使用不同的后端实现，例如 OpenCV::DNN（默认）、TensorRT、PaddleInference、ONNXRuntime，或任何其他您偏好的后端。\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_84d8d3827290.png)\n\n## 演示\n\nhttps:\u002F\u002Fgithub.com\u002Fsherlockchou86\u002Fvideo_pipe_c\u002Fassets\u002F13251045\u002Fb1289faa-e2c7-4d38-871e-879ae36f6d50\n\n全屏观看请使用播放器右下角的按钮，[更多视频演示](.\u002FSAMPLES.md)\n\n## 功能\n\n`VideoPipe` 是一个简化计算机视觉算法模型集成的框架。需要注意的是，它并非像 TensorFlow 或 TensorRT 那样的深度学习框架。`VideoPipe` 的主要功能如下：\n\n- **流读取**：支持主流视频流协议，如 UDP、RTSP、RTMP、文件和应用程序；同时也支持图像读取。\n- **视频解码**：基于 OpenCV\u002FGStreamer 支持视频和图像解码，并具备硬件加速功能。\n- **算法推理**：支持多层级的深度学习推理，如目标检测、图像分类、特征提取和图像生成；同时支持传统图像算法的集成。**现已支持多模态大语言模型（mLLM）集成（更新于 2025 年 8 月 12 日）**\n- **目标跟踪**：支持目标跟踪，例如 IOU 和 SORT 跟踪算法。\n- **行为分析（BA）**：基于跟踪结果进行行为分析，例如交通行为检测，如越线、停车和违规行为。\n- **业务逻辑**：允许集成任何自定义业务逻辑，以紧密贴合具体业务需求。\n- **数据代理**：支持将结构化数据（JSON、XML 或自定义格式）通过 Kafka、Socket 等方式推送到云端、文件或其他第三方平台。\n- **录制**：支持特定时间段的视频录制及特定帧的截图，并可保存为文件。\n- **屏幕显示（OSD）**：支持在帧上叠加结构化数据及业务逻辑处理结果。\n- **视频编码**：基于 OpenCV\u002FGStreamer 支持视频和图像编码，并具备硬件加速功能。\n- **流推送**：支持主流视频流协议，如 UDP、RTSP、RTMP、文件和应用程序；同时也支持图像流传输。\n\n## 快速入门\n\n### 依赖项\n\n平台\n- Ubuntu 18.04 x86_64，配备 NVIDIA RTX\u002FTesla 显卡\n- Ubuntu 18.04 aarch64，NVIDIA Jetson 系列设备，已测试 TX2 型号\n- Ubuntu 22.04 x86_64，基于 Windows 10 的 VMware 虚拟机，纯 CPU 环境\n- Ubuntu 18.04 x86_64，Cambrian MLU 系列设备，已测试 MLU 370 型号（未提供代码）\n- Ubuntu 18.04 aarch64，Rockchip RK35** 系列设备，已测试 RK3588 型号（未提供代码）\n- Ubuntu 22.04 aarch64，Ascend 310\u002F910 系列设备，已测试 Atlas 300I-Pro 型号（未提供代码）\n- 欢迎您的测试\n\n基础\n- C++ 17\n- OpenCV >= 4.6\n- GStreamer 1.14.5（OpenCV 所需）\n- GCC >= 7.5\n\n可选，如果您需要实现自定义推理后端，或使用除 `opencv::dnn` 之外的其他后端：\n- CUDA\n- TensorRT\n- Paddle Inference\n- ONNX Runtime\n- mLLM（Ollama\u002FvLLM\u002FOpenAI 兼容 API 服务）\n- 您喜欢的任何工具\n\n[如何安装 CUDA 和 TensorRT](.\u002Fthird_party\u002Ftrt_vehicle\u002FREADME.md)\n\n[如何安装 Paddle_Inference](.\u002Fthird_party\u002Fpaddle_ocr\u002FREADME.md)\n\n### 编译与调试\n\n1. 运行 `git clone https:\u002F\u002Fgithub.com\u002Fsherlockchou86\u002FVideoPipe.git`\n2. 运行 `cd VideoPipe`\n3. 运行 `mkdir build && cd build`\n4. 运行 `cmake ..`\n5. 运行 `make -j8`\n\n编译完成后，所有库文件将存储在 `build\u002Flibs` 目录下，所有示例可执行文件则位于 `build\u002Fbin` 目录。在第4步中，您可以添加一些编译选项：\n\n- `-DVP_WITH_CUDA=ON`（编译 CUDA 相关功能；默认为 OFF）\n- `-DVP_WITH_TRT=ON`（编译 TensorRT 相关功能及示例；默认为 OFF）\n- `-DVP_WITH_PADDLE=ON`（编译 PaddlePaddle 相关功能及示例；默认为 OFF）\n- `-DVP_WITH_KAFKA=ON`（编译 Kafka 相关功能及示例；默认为 OFF）\n- `-DVP_WITH_LLM=ON`（编译 LLM 相关功能及示例；默认为 OFF）\n- `-DVP_BUILD_COMPLEX_SAMPLES=ON`（编译高级示例；默认为 OFF）\n\n例如，要启用 CUDA 和 TensorRT 模块，可以运行：\n```bash\ncmake -DVP_WITH_CUDA=ON -DVP_WITH_TRT=ON ..\n```\n如果您只运行：\n```bash\ncmake ..\n```\n则所有代码将在 CPU 上执行。\n\n要运行编译好的示例，首先需要下载模型文件和测试数据：\n\n1. [Google Drive - 下载测试文件和模型](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1v9dVcR6xttUTB-WPsH3mZ_ZZMzD4wG-v?usp=sharing)\n2. [百度网盘 - 下载测试文件和模型](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1jr2nBnEDmuNaM5DiMjbC0g?pwd=nf53)\n\n将下载的目录（命名为 `vp_data`）放置在任意位置（例如 `\u002Froot\u002Fabc`）。然后，在 `vp_data` 所在的目录下运行示例。例如，在 `\u002Froot\u002Fabc` 中执行以下命令：\n```bash\n[path to VideoPipe]\u002Fbuild\u002Fbin\u002F1-1-1_sample\n```\n\n**注意**：`.\u002Fthird_party\u002F` 目录包含独立的项目。其中一些是仅含头文件的库，直接由 VideoPipe 引用；另一些则包含 CPP 文件，可以单独编译或运行。VideoPipe 依赖这些库，并且它们会在 VideoPipe 的构建过程中自动编译。这些库也包含各自的示例；具体使用方法请参考相应子目录中的 README 文件。\n\n### 使用方法\n\n以下是使用 `VideoPipe` 构建并运行示例管道的指南。您可以将 `VideoPipe` 编译为库并进行链接，也可以直接包含源代码并编译整个应用程序。\n\n下面是一个示例代码，演示如何构建管道并运行它。请务必根据实际情况更新代码中的文件路径：\n\n```c++\n#include \"..\u002Fnodes\u002Fvp_file_src_node.h\"\n#include \"..\u002Fnodes\u002Finfers\u002Fvp_yunet_face_detector_node.h\"\n#include \"..\u002Fnodes\u002Finfers\u002Fvp_sface_feature_encoder_node.h\"\n#include \"..\u002Fnodes\u002Fosd\u002Fvp_face_osd_node_v2.h\"\n#include \"..\u002Fnodes\u002Fvp_screen_des_node.h\"\n#include \"..\u002Fnodes\u002Fvp_rtmp_des_node.h\"\n#include \"..\u002Futils\u002Fanalysis_board\u002Fvp_analysis_board.h\"\n\n\u002F*\n* 名称：1-1-N 示例\n* 完整代码位于：samples\u002F1-1-N_sample.cpp\n* 功能：1 路视频输入，1 项视频分析任务（人脸检测与识别），2 路输出（屏幕显示\u002FRTMP 流）\n*\u002F\n\nint main() {\n    VP_SET_LOG_INCLUDE_CODE_LOCATION(false);\n    VP_SET_LOG_INCLUDE_THREAD_ID(false);\n    VP_LOGGER_INIT();\n\n    \u002F\u002F 1. 创建节点\n    \u002F\u002F 视频源节点\n    auto file_src_0 = std::make_shared\u003Cvp_nodes::vp_file_src_node>(\"file_src_0\", 0, \".\u002Ftest_video\u002F10.mp4\", 0.6);\n    \n    \u002F\u002F 2. 模型推理节点\n    \u002F\u002F 第一层推理：人脸检测\n    auto yunet_face_detector_0 = std::make_shared\u003Cvp_nodes::vp_yunet_face_detector_node>(\"yunet_face_detector_0\", \".\u002Fmodels\u002Fface\u002Fface_detection_yunet_2022mar.onnx\");\n    \u002F\u002F 第二层推理：人脸识别\n    auto sface_face_encoder_0 = std::make_shared\u003Cvp_nodes::vp_sface_feature_encoder_node>(\"sface_face_encoder_0\", \".\u002Fmodels\u002Fface\u002Fface_recognition_sface_2021dec.onnx\");\n    \n    \u002F\u002F 3. OSD 节点\n    \u002F\u002F 在帧上绘制结果\n    auto osd_0 = std::make_shared\u003Cvp_nodes::vp_face_osd_node_v2>(\"osd_0\");\n    \n    \u002F\u002F 屏幕显示节点\n    auto screen_des_0 = std::make_shared\u003Cvp_nodes::vp_screen_des_node>(\"screen_des_0\", 0);\n    \u002F\u002F RTMP 流节点\n    auto rtmp_des_0 = std::make_shared\u003Cvp_nodes::vp_rtmp_des_node>(\"rtmp_des_0\", 0, \"rtmp:\u002F\u002F192.168.77.60\u002Flive\u002F10000\");\n\n    \u002F\u002F 通过连接节点构建管道\n    yunet_face_detector_0->attach_to({file_src_0});\n    sface_face_encoder_0->attach_to({yunet_face_detector_0});\n    osd_0->attach_to({sface_face_encoder_0});\n\n    \u002F\u002F 自动拆分管道，分别用于屏幕显示和 RTMP 流传输\n    screen_des_0->attach_to({osd_0});\n    rtmp_des_0->attach_to({osd_0});\n\n    \u002F\u002F 启动管道\n    file_src_0->start();\n\n    \u002F\u002F 可视化管道\n    vp_utils::vp_analysis_board board({file_src_0});\n    board.display();\n}\n```\n\n**注意**：运行此代码将显示三个画面：\n1. **管道状态**：实时更新的管道运行状态。\n2. **屏幕输出**：GUI 界面显示的结果。\n3. **RTMP 输出**：可在指定 RTMP URL 上观看的流媒体输出。\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_e9aff6fc4e17.png)\n\n\n### 原型示例\n|编号|示例|截图|\n|--|--|--|\n|1|face_tracking_sample|![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_58e93595333f.png)|\n|2|vehicle_tracking_sample|![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_199e41b62662.png)|\n|3|mask_rcnn_sample|![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_3d45a984c86c.png)|\n|4|openpose_sample|![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_7d3ca0ceaae1.png)|\n|5|face_swap_sample|![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_86822fe3b816.png)|\n|6|mllm_analyse_sample|![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_9ff44201bc35.png)|\n\n总共提供了超过 40 个原型示例。[点击此处](.\u002FSAMPLES.md) 查看更多。\n\n## 更多信息\n- [示例代码](.\u002Fsamples)\n- [节点表](.\u002Fnodes\u002FREADME.md)\n- [VideoPipe 工作原理](.\u002Fdoc\u002Fabout.md)\n- [开发环境参考](.\u002Fdoc\u002Fenv.md)\n\n## 微信讨论群\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_readme_66bc08a6ebcd.png)\n\n## 致谢\n\n\u003Ca href=\"https:\u002F\u002Fhellogithub.com\u002Frepository\u002F4284d29e778642a4a51a471ab1eae6f0\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fapi.hellogithub.com\u002Fv1\u002Fwidgets\u002Frecommend.svg?rid=4284d29e778642a4a51a471ab1eae6f0&claim_uid=hBZTk0E2RAzJKyq\" alt=\"精选｜HelloGitHub\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" \u002F>\u003C\u002Fa>","# VideoPipe 快速上手指南\n\nVideoPipe 是一个基于 C++ 编写的视频分析与结构化框架。它采用插件化（Node）设计，依赖极少，可跨平台运行（支持 x86、ARM、各类加速卡），适用于视频结构化、人脸\u002F车辆识别、行为分析及多模态大模型（mLLM）集成等场景。\n\n## 1. 环境准备\n\n### 系统要求\nVideoPipe 已在以下平台验证通过：\n- **x86_64**: Ubuntu 18.04 \u002F 22.04 (支持 NVIDIA GPU, 纯 CPU, 寒武纪 MLU)\n- **aarch64**: Ubuntu 18.04 \u002F 22.04 (支持 NVIDIA Jetson, Rockchip RK3588, 华为 Ascend)\n\n### 前置依赖\n确保安装以下基础库：\n- **C++**: 标准需支持 C++ 17\n- **编译器**: GCC >= 7.5\n- **核心库**: \n  - OpenCV >= 4.6\n  - GStreamer >= 1.14.5 (OpenCV 依赖)\n\n### 可选依赖（按需安装）\n若需使用特定推理后端或功能，请额外安装：\n- **GPU 加速**: CUDA, TensorRT\n- **其他框架**: Paddle Inference, ONNX Runtime\n- **大模型**: mLLM (Ollama\u002FvLLM\u002FOpenAI-compatible API)\n- **消息队列**: Kafka\n\n> **提示**：CUDA 和 TensorRT 的安装参考 [官方文档](.\u002Fthird_party\u002Ftrt_vehicle\u002FREADME.md)；Paddle 安装参考 [此处](.\u002Fthird_party\u002Fpaddle_ocr\u002FREADME.md)。\n\n## 2. 安装步骤\n\n### 第一步：克隆代码\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fsherlockchou86\u002FVideoPipe.git\ncd VideoPipe\n```\n\n### 第二步：编译构建\n创建构建目录并执行 cmake。可根据需求添加编译选项（如启用 CUDA、TensorRT 或 LLM 支持）。\n\n**基础编译（仅 CPU）：**\n```bash\nmkdir build && cd build\ncmake ..\nmake -j8\n```\n\n**启用高级功能示例（CUDA + TensorRT）：**\n```bash\nmkdir build && cd build\ncmake -DVP_WITH_CUDA=ON -DVP_WITH_TRT=ON ..\nmake -j8\n```\n\n**常用编译选项说明：**\n- `-DVP_WITH_CUDA=ON`: 启用 CUDA\n- `-DVP_WITH_TRT=ON`: 启用 TensorRT\n- `-DVP_WITH_PADDLE=ON`: 启用 PaddlePaddle\n- `-DVP_WITH_LLM=ON`: 启用大模型相关功能\n- `-DVP_BUILD_COMPLEX_SAMPLES=ON`: 编译高级示例\n\n编译完成后，库文件位于 `build\u002Flibs`，可执行示例位于 `build\u002Fbin`。\n\n### 第三步：准备测试数据\n下载测试视频和模型文件（任选其一）：\n- **Google Drive**: [下载链接](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1v9dVcR6xttUTB-WPsH3mZ_ZZMzD4wG-v?usp=sharing)\n- **百度网盘**: [下载链接](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1jr2nBnEDmuNaM5DiMjbC0g?pwd=nf53) (提取码: nf53)\n\n解压后将文件夹重命名为 `vp_data`，并将其放置在任意目录（例如 `\u002Froot\u002Fvp_data`）。后续运行示例时，需在该目录下执行。\n\n## 3. 基本使用\n\nVideoPipe 通过组合不同的“节点（Node）”来构建处理流水线。以下是一个最简示例，实现**读取视频 -> 人脸检测 -> 人脸识别 -> 屏幕显示\u002F推流**的功能。\n\n### 示例代码 (`1-1-N_sample`)\n\n请确保已根据实际路径调整代码中的模型和视频文件路径。\n\n```c++\n#include \"..\u002Fnodes\u002Fvp_file_src_node.h\"\n#include \"..\u002Fnodes\u002Finfers\u002Fvp_yunet_face_detector_node.h\"\n#include \"..\u002Fnodes\u002Finfers\u002Fvp_sface_feature_encoder_node.h\"\n#include \"..\u002Fnodes\u002Fosd\u002Fvp_face_osd_node_v2.h\"\n#include \"..\u002Fnodes\u002Fvp_screen_des_node.h\"\n#include \"..\u002Fnodes\u002Fvp_rtmp_des_node.h\"\n#include \"..\u002Futils\u002Fanalysis_board\u002Fvp_analysis_board.h\"\n\n\u002F*\n* 功能：1 路视频输入，1 个分析任务（人脸检测 + 识别），2 路输出（屏幕显示 + RTMP 推流）\n*\u002F\n\nint main() {\n    VP_SET_LOG_INCLUDE_CODE_LOCATION(false);\n    VP_SET_LOG_INCLUDE_THREAD_ID(false);\n    VP_LOGGER_INIT();\n\n    \u002F\u002F 1. 创建节点\n    \u002F\u002F 视频源节点\n    auto file_src_0 = std::make_shared\u003Cvp_nodes::vp_file_src_node>(\"file_src_0\", 0, \".\u002Ftest_video\u002F10.mp4\", 0.6);\n    \n    \u002F\u002F 2. 模型推理节点\n    \u002F\u002F 一级推理：人脸检测\n    auto yunet_face_detector_0 = std::make_shared\u003Cvp_nodes::vp_yunet_face_detector_node>(\"yunet_face_detector_0\", \".\u002Fmodels\u002Fface\u002Fface_detection_yunet_2022mar.onnx\");\n    \u002F\u002F 二级推理：人脸特征提取\n    auto sface_face_encoder_0 = std::make_shared\u003Cvp_nodes::vp_sface_feature_encoder_node>(\"sface_face_encoder_0\", \".\u002Fmodels\u002Fface\u002Fface_recognition_sface_2021dec.onnx\");\n    \n    \u002F\u002F 3. OSD 节点 (在画面上绘制结果)\n    auto osd_0 = std::make_shared\u003Cvp_nodes::vp_face_osd_node_v2>(\"osd_0\");\n    \n    \u002F\u002F 输出节点\n    auto screen_des_0 = std::make_shared\u003Cvp_nodes::vp_screen_des_node>(\"screen_des_0\", 0);\n    auto rtmp_des_0 = std::make_shared\u003Cvp_nodes::vp_rtmp_des_node>(\"rtmp_des_0\", 0, \"rtmp:\u002F\u002F192.168.77.60\u002Flive\u002F10000\");\n\n    \u002F\u002F 4. 构建流水线 (连接节点)\n    yunet_face_detector_0->attach_to({file_src_0});\n    sface_face_encoder_0->attach_to({yunet_face_detector_0});\n    osd_0->attach_to({sface_face_encoder_0});\n\n    \u002F\u002F 分流输出：同时显示在屏幕并推送到 RTMP\n    screen_des_0->attach_to({osd_0});\n    rtmp_des_0->attach_to({osd_0});\n\n    \u002F\u002F 5. 启动流水线\n    file_src_0->start();\n\n    \u002F\u002F 可视化流水线状态\n    vp_utils::vp_analysis_board board({file_src_0});\n    board.display();\n}\n```\n\n### 运行示例\n假设你将 `vp_data` 放在了 `\u002Froot\u002Fvp_data`，且编译后的程序在 `\u002Froot\u002FVideoPipe\u002Fbuild\u002Fbin`：\n\n```bash\ncd \u002Froot\u002Fvp_data\n\u002Froot\u002FVideoPipe\u002Fbuild\u002Fbin\u002F1-1-N_sample\n```\n\n运行后将看到三个窗口\u002F效果：\n1. **流水线状态板**：实时显示各节点处理状态。\n2. **屏幕输出**：带有检测框和识别结果的 видео画面。\n3. **RTMP 流**：可通过播放器访问指定的 RTMP 地址观看。\n\n更多示例（如车辆追踪、姿态估计、大模型分析等）请参考 `samples` 目录或 [示例列表](.\u002FSAMPLES.md)。","某智慧交通团队正在构建一套跨城市的违章行为检测系统，需同时兼容老旧服务器与新型边缘设备，实时分析多路 RTSP 监控流中的车辆越线与违停行为。\n\n### 没有 VideoPipe 时\n- **开发周期漫长**：团队需手动编写大量 C++ 代码来串联视频解码、模型推理（如 YOLO）和轨迹跟踪模块，每增加一个新算法都要重构底层逻辑。\n- **硬件绑定严重**：原有方案深度依赖特定厂商的私有框架（如仅限 NVIDIA 或华为芯片），导致无法在普通 x86 服务器上部署，扩容成本极高。\n- **业务逻辑耦合**：具体的违章判断规则（如越线检测）硬编码在推理流程中，一旦交通法规调整或需要新增“逆行”检测，修改代码极易引发系统崩溃。\n- **数据对接困难**：结构化结果（如车牌、时间、违章类型）格式不统一，需额外开发中间件才能推送到云端数据库，延迟高且易丢包。\n\n### 使用 VideoPipe 后\n- **搭建效率倍增**：利用 VideoPipe 的插件化节点机制，开发者只需像搭积木一样配置“拉流 - 解码 - 推理 - 跟踪 - 行为分析”流水线，无需重复造轮子，原型验证从数周缩短至数天。\n- **真正跨平台部署**：凭借极少的第三方依赖，同一套配置文件可直接运行在 NVIDIA GPU 服务器、普通 Linux 工控机甚至树莓派上，完美利旧现有硬件资源。\n- **灵活定制业务**：通过独立的行为分析节点，团队可轻松插入自定义的越线或违停逻辑，甚至集成最新的多模态大模型（mLLM）进行复杂场景理解，升级无需改动核心框架。\n- **标准化数据输出**：内置的数据代理节点自动将分析结果封装为标准 JSON 格式，并稳定推送至云端或本地文件，实现了从视频流到结构化数据的端到端闭环。\n\nVideoPipe 通过低代码的流水线架构，让复杂的视频结构化应用变得像组装乐高一样简单高效，彻底打破了算法落地中的平台壁垒与开发瓶颈。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsherlockchou86_VideoPipe_9aececbf.png","sherlockchou86","zhouzhi","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fsherlockchou86_5b90c2a6.jpg","a man working at CIA",null,"http:\u002F\u002Fwww.videopipe.cool","https:\u002F\u002Fgithub.com\u002Fsherlockchou86",[82,86,90,94],{"name":83,"color":84,"percentage":85},"C++","#f34b7d",99.1,{"name":87,"color":88,"percentage":89},"CMake","#DA3434",0.6,{"name":91,"color":92,"percentage":93},"Shell","#89e051",0.2,{"name":95,"color":96,"percentage":97},"C","#555555",0,2766,438,"2026-04-18T14:18:54","Apache-2.0",4,"Linux (Ubuntu 18.04, Ubuntu 22.04)","非必需（支持纯 CPU 运行）。若需加速，支持 NVIDIA RTX\u002FTesla 系列、Jetson 系列、寒武纪 MLU 系列、昇腾 Ascend 310\u002F910 系列及瑞芯微 RK3588。CUDA 为可选依赖，具体版本未说明。","未说明",{"notes":107,"python":108,"dependencies":109},"该工具核心由 C++ 编写，无需 Python 环境。默认使用 OpenCV::DNN 后端可在纯 CPU 上运行。若需启用 GPU 加速或特定推理后端（如 TensorRT、Paddle），需在编译时通过 CMake 选项（如 -DVP_WITH_CUDA=ON）开启并安装相应依赖。已测试平台包括 x86_64 和 aarch64 架构。部分特定硬件（如寒武纪、昇腾、瑞芯微）的适配代码未在开源仓库中提供。运行示例前需单独下载模型文件和测试数据。","无要求 (核心基于 C++)",[110,111,112,113,114,115,116,117,118],"C++ 17","OpenCV >= 4.6","GStreamer >= 1.14.5","GCC >= 7.5","CUDA (可选)","TensorRT (可选)","Paddle Inference (可选)","ONNX Runtime (可选)","mLLM API (可选，如 Ollama\u002FvLLM)",[120,13,14,121,15,44],"其他","视频",[123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142],"cv","deep-learning","object-detection","opencv","gstreamer","video-analysis","ai","behaviour-analysis","similarity-search","deepstream","face-recognition","feature-extraction","image-classification","image-segmentation","license-plate-recognition","reid","llm","openai","ollama","multimodal-large-language-models","2026-03-27T02:49:30.150509","2026-04-20T10:22:47.860436",[146,151,156,161,165,170],{"id":147,"question_zh":148,"answer_zh":149,"source_url":150},44365,"编译时出现 'opencv2\u002Ffreetype.hpp: No such file or directory' 错误怎么办？","该错误通常是因为缺少 OpenCV 的 freetype 相关依赖库。尝试运行以下命令安装缺失的依赖：\nsudo apt-get install libharfbuzz-dev libfreetype-dev libgtk2.0-dev\n如果安装后仍然报错，请检查 OpenCV 是否正确编译并包含了 contrib 模块（freetype 通常位于 contrib 中），或者确认 CMake 配置中是否正确指定了 OpenCV 的路径。","https:\u002F\u002Fgithub.com\u002Fsherlockchou86\u002FVideoPipe\u002Fissues\u002F40",{"id":152,"question_zh":153,"answer_zh":154,"source_url":155},44366,"VideoPipe 支持在 Mac M1 芯片上运行吗？","可以在 Mac M1 上运行，但需要解决一些语法兼容性问题。用户反馈在 macOS 默认编译模式下可能会遇到 'non-constant-expression cannot be narrowed from type int to float' 的错误（特别是在 vp_face_swap_node.cpp 等文件中）。\n解决方法是根据编译器提示，在报错的代码行插入显式的类型转换，例如将:\n{i->key_points[2].first, i->key_points[2].second}\n修改为:\n{static_cast\u003Cfloat>(i->key_points[2].first), static_cast\u003Cfloat>(i->key_points[2].second)}\n此外，建议使用较新版本的 GCC 或 Clang 进行编译。","https:\u002F\u002Fgithub.com\u002Fsherlockchou86\u002FVideoPipe\u002Fissues\u002F55",{"id":157,"question_zh":158,"answer_zh":159,"source_url":160},44367,"无法打开 MP4 视频文件（open file failed）是什么原因？","该问题通常与后端多媒体框架（如 GStreamer 或 FFmpeg）的配置有关，特别是在 Docker 环境（如 DeepStream）中。\n解决方案包括：\n1. 确保安装了正确的解码器插件。如果在 DeepStream Docker 中，可能需要运行额外的安装脚本，例如：sh \u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream-7.0\u002Fuser_addtional_install.sh。\n2. 检查视频文件的分辨率和格式是否与模型输入要求匹配。有时需要调整视频分辨率（例如调整为 1280x720）才能正常读取和处理。\n3. 确认 OpenCV 构建信息中 FFMPEG 或 GStreamer 支持已启用（通过 cv2.getBuildInformation() 查看）。","https:\u002F\u002Fgithub.com\u002Fsherlockchou86\u002FVideoPipe\u002Fissues\u002F54",{"id":162,"question_zh":163,"answer_zh":164,"source_url":160},44368,"如何在 Release 模式下编译 VideoPipe 以提高运行帧率（FPS）？","默认情况下 VideoPipe 可能以 Debug 模式编译，导致推理速度较慢（如视频复原任务仅 11-12 FPS）。\n要提高性能，请修改项目根目录下的 CMakeLists.txt 文件，将构建类型（Build Type）从 Debug 改为 Release。具体操作是找到设置 CMAKE_BUILD_TYPE 的地方，将其修改为：\nset(CMAKE_BUILD_TYPE Release)\n然后重新执行 cmake 和 make 命令进行编译。这将开启编译器优化，显著提升运行帧率。",{"id":166,"question_zh":167,"answer_zh":168,"source_url":169},44369,"使用 TensorRT 8.5.x 版本运行时出现 cv::dnn::readNet 加载失败或程序崩溃怎么办？","这个问题可能并非直接由 TensorRT 版本引起，日志显示崩溃往往发生在 cv::resize 阶段（断言失败：inv_scale_x > 0），这通常是因为输入视频的尺寸异常或为空导致的。\n建议的解决方案：\n1. 优先使用基于 opencv::dnn 的示例代码，它们通常使用 ONNX 模型，兼容性更好。\n2. 检查测试视频文件是否损坏，或尝试使用项目 vp_data 目录中提供的标准测试视频。\n3. 确保输入图像\u002F视频的分辨率合法，避免缩放计算中出现除以零的情况。","https:\u002F\u002Fgithub.com\u002Fsherlockchou86\u002FVideoPipe\u002Fissues\u002F43",{"id":171,"question_zh":172,"answer_zh":173,"source_url":174},44370,"源码中的 channel_index 参数具体有什么作用？","channel_index 用于指定数据源节点（Source Node）处理的数据通道索引。在 VideoPipe 的多路流处理架构中，一个节点可能同时接收来自多个上游节点的数据，或者一个源节点可能产生多路数据流（如多摄像头输入）。channel_index 帮助框架区分和路由这些不同的数据流，确保数据被发送到正确的下游处理节点。具体实现细节可参考 vp_src_node.h 头文件中的注释及源码逻辑。","https:\u002F\u002Fgithub.com\u002Fsherlockchou86\u002FVideoPipe\u002Fissues\u002F4",[176],{"id":177,"version":178,"summary_zh":179,"released_at":180},351920,"v0.1","VideoPipe 的第一个稳定版本。","2024-04-28T05:46:56"]