|
@@ -32,27 +32,24 @@ void InferNode::work()
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
auto det_result = model_->forward(tensor::cvimg(image));
|
|
auto det_result = model_->forward(tensor::cvimg(image));
|
|
- if (model_type_ == ModelType::DEPTH_ANYTHING)
|
|
|
|
- {
|
|
|
|
- auto result = std::get<cv::Mat>(det_result);
|
|
|
|
- // do something
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- else if (model_type_ == ModelType::YOLO11 || model_type_ == ModelType::YOLOV8 || model_type_ == ModelType::YOLOV5)
|
|
|
|
- {
|
|
|
|
|
|
+
|
|
|
|
+ if (std::holds_alternative<std::vector<data::BoxArray>>(det_result)) {
|
|
auto result = std::get<data::BoxArray>(det_result);
|
|
auto result = std::get<data::BoxArray>(det_result);
|
|
for (auto& r : result)
|
|
for (auto& r : result)
|
|
{
|
|
{
|
|
metaData->boxes.push_back(r);
|
|
metaData->boxes.push_back(r);
|
|
}
|
|
}
|
|
metaData->boxes = result;
|
|
metaData->boxes = result;
|
|
- for (auto& output_buffer : output_buffers_)
|
|
|
|
- {
|
|
|
|
- // printf("Node %s push data to %s\n", name_.c_str(), output_buffer.first.c_str());
|
|
|
|
- output_buffer.second->push(metaData);
|
|
|
|
- }
|
|
|
|
|
|
+ // 处理检测框...
|
|
|
|
+ } else if(std::holds_alternative<cv::Mat>(det_result)){
|
|
|
|
+ // 记录错误或抛出明确异常
|
|
|
|
+ auto result = std::get<cv::Mat>(det_result);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ printf("Unexpected result type from model");
|
|
|
|
+ throw std::runtime_error("Unexpected result type from model");
|
|
|
|
+ }
|
|
}
|
|
}
|
|
if (!has_data)
|
|
if (!has_data)
|
|
{
|
|
{
|