diff --git a/plugins/ai_shoe_det/ai_shoe_det_node.cpp b/plugins/ai_shoe_det/ai_shoe_det_node.cpp index f432db9..d6cdc4e 100644 --- a/plugins/ai_shoe_det/ai_shoe_det_node.cpp +++ b/plugins/ai_shoe_det/ai_shoe_det_node.cpp @@ -323,10 +323,17 @@ private: std::vector dets; if (outputs.empty() || !outputs[0].data) return dets; + if (outputs[0].type != RKNN_TENSOR_FLOAT32 || outputs[0].size < sizeof(float) * 5) { + LogWarn("[ai_shoe_det] unsupported output tensor type or size"); + return dets; + } + // 假设 YOLOv8 输出格式: [num_boxes, 5] = x, y, w, h, conf // 实际格式可能不同,需要根据模型调整 const float* data = reinterpret_cast(outputs[0].data); - int num_boxes = 8400; // YOLOv8 默认 + const size_t value_count = outputs[0].size / sizeof(float); + const int num_boxes = static_cast(std::min(8400, value_count / 5)); + if (num_boxes <= 0) return dets; float scale_x = static_cast(win_w) / model_w_; float scale_y = static_cast(win_h) / model_h_;