From 8b0e31121a9a29b92a41fc575138a2e9b4c12d8e Mon Sep 17 00:00:00 2001
From: wangrong <wangrong@shsening.com>
Date: 星期六, 18 一月 2025 22:12:28 +0800
Subject: [PATCH] add person gathering

---
 nodes/vp_infer_node.cpp |   21 ++++++++++++++++++---
 1 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/nodes/vp_infer_node.cpp b/nodes/vp_infer_node.cpp
index cc86d8e..099f392 100644
--- a/nodes/vp_infer_node.cpp
+++ b/nodes/vp_infer_node.cpp
@@ -1,6 +1,6 @@
 
 #include <fstream>
-
+#include <opencv2/core/cuda.hpp>
 #include "vp_infer_node.h"
 
 namespace vp_nodes {
@@ -35,8 +35,23 @@
         try {
             net = cv::dnn::readNet(model_path, model_config_path);
             #ifdef VP_WITH_CUDA
-            net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);
-            net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);
+            // net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);
+            // net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);
+            // 妫�鏌ュ彲鐢ㄧ殑 GPU 鏁伴噺
+            int gpu_count = cv::cuda::getCudaEnabledDeviceCount();
+            if (gpu_count > 0) {
+                // 鍒濆鍖栭殢鏈烘暟绉嶅瓙骞堕殢鏈洪�夋嫨涓�涓� GPU
+                std::srand(static_cast<unsigned>(std::time(nullptr)));
+                int selected_gpu = std::rand() % gpu_count;
+                // 璁剧疆 CUDA 璁惧骞堕厤缃负浣跨敤鎸囧畾 GPU
+                cv::cuda::setDevice(selected_gpu);
+                net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);
+                net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);
+
+                VP_INFO(vp_utils::string_format("[%s] Using CUDA on GPU %d", node_name.c_str(), selected_gpu));
+            } else {
+                VP_WARN(vp_utils::string_format("[%s] No CUDA-enabled GPUs detected. Running on CPU.", node_name.c_str()));
+            }
             #endif
         }
         catch(const std::exception& e) {

--
Gitblit v1.9.1