Guard shoe detector output parsing

This commit is contained in:
tian 2026-03-14 13:19:23 +08:00
parent 14526d054b
commit fa71ccb0d4

View File

@ -323,10 +323,17 @@ private:
std::vector<DetBox> 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<const float*>(outputs[0].data);
int num_boxes = 8400; // YOLOv8 默认
const size_t value_count = outputs[0].size / sizeof(float);
const int num_boxes = static_cast<int>(std::min<size_t>(8400, value_count / 5));
if (num_boxes <= 0) return dets;
float scale_x = static_cast<float>(win_w) / model_w_;
float scale_y = static_cast<float>(win_h) / model_h_;