{
enum class TaskApiResultType { MIN_X, MIN_Y, MAX_X, MAX_Y, LABEL };
-struct TaskApiResult : public ServiceBaseResultType {
- TaskApiResult() : ServiceBaseResultType(ServiceType::TASK_API)
- {}
+struct ObjectDetectionResult {
bool is_valid { false };
- unsigned int frame_number {};
unsigned int num_of_objects {};
std::vector<Rect> bboxes;
std::vector<std::string> labels;
};
+struct TaskApiResult : public ServiceBaseResultType {
+ TaskApiResult() : ServiceBaseResultType(ServiceType::TASK_API)
+ {}
+ unsigned int frame_number {};
+ ObjectDetectionResult object_detection_result;
+};
}
}
auto preprocessedImg = dynamic_cast<ImageDataType &>(data);
unique_lock<mutex> lock(_result_lock);
- if (_result.is_valid) {
- auto rects = _result.bboxes;
- auto labels = _result.labels;
+ if (_result.object_detection_result.is_valid) {
+ auto rects = _result.object_detection_result.bboxes;
+ auto labels = _result.object_detection_result.labels;
cv::Mat imgCv(cv::Size(preprocessedImg.width, preprocessedImg.height), CV_MAKETYPE(CV_8U, 3),
preprocessedImg.ptr);
}
lock.lock();
- _result.is_valid = false;
+ _result.object_detection_result.is_valid = false;
}
}
unique_lock<mutex> lock(_result_lock);
if (output->_type == ResultType::OBJECT_DETECTION) {
- _result.bboxes = dynamic_cast<OdResultType &>(*output)._rects;
- _result.labels = dynamic_cast<OdResultType &>(*output)._labels;
- _result.is_valid = true;
+ _result.object_detection_result.bboxes = dynamic_cast<OdResultType &>(*output)._rects;
+ _result.object_detection_result.labels = dynamic_cast<OdResultType &>(*output)._labels;
+ _result.object_detection_result.is_valid = true;
}
}
}
_result = result;
- return _result.bboxes.size();
+ return _result.object_detection_result.bboxes.size();
}
bool ObjectDetectionTask::isKeyValid(const std::string &key)
switch (_result_keys[key]) {
case TaskApiResultType::MIN_X:
- return _result.bboxes[idx].left;
+ return _result.object_detection_result.bboxes[idx].left;
case TaskApiResultType::MIN_Y:
- return _result.bboxes[idx].top;
+ return _result.object_detection_result.bboxes[idx].top;
case TaskApiResultType::MAX_X:
- return _result.bboxes[idx].right;
+ return _result.object_detection_result.bboxes[idx].right;
case TaskApiResultType::MAX_Y:
- return _result.bboxes[idx].bottom;
+ return _result.object_detection_result.bboxes[idx].bottom;
default:
throw InvalidParameter("A given result key is inavlid.");
}
unique_lock<mutex> lock(_result_lock);
- if (_result.labels.empty())
+ if (_result.object_detection_result.labels.empty())
throw NoData("Label not provided.");
switch (_result_keys[key]) {
case TaskApiResultType::LABEL:
- return _result.labels[idx].c_str();
+ return _result.object_detection_result.labels[idx].c_str();
default:
throw InvalidParameter("A given result key is inavlid.");
}