struct BaseResultType {
ResultType _type { ResultType::NONE };
unsigned int _frame_number {};
+ std::vector<Rect> _rects;
BaseResultType(ResultType type) : _type(type)
{}
virtual ~BaseResultType()
struct OdResultType : public BaseResultType {
OdResultType() : BaseResultType(ResultType::OBJECT_DETECTION)
{}
- unsigned int _frame_number {};
- std::vector<Rect> rects;
// TODO
};
struct FdResultType : public BaseResultType {
FdResultType() : BaseResultType(ResultType::FACE_DETECTION)
{}
- unsigned int _frame_number {};
- std::vector<Rect> rects;
// TODO
};
if (ret != MEDIA_VISION_ERROR_NONE)
throw runtime_error("Fail to get face detection result count.");
- _output_data.rects.clear();
+ _output_data._rects.clear();
_output_data._frame_number = frame_number;
for (unsigned int idx = 0; idx < result_cnt; ++idx) {
if (ret != MEDIA_VISION_ERROR_NONE)
throw runtime_error("Fail to get face detection bound box.");
- _output_data.rects.push_back(rect);
+ _output_data._rects.push_back(rect);
}
return _output_data;
if (ret != MEDIA_VISION_ERROR_NONE)
throw runtime_error("Fail to get object detection result count.");
- _output_data.rects.clear();
+ _output_data._rects.clear();
_output_data._frame_number = frame_number;
for (unsigned int idx = 0; idx < result_cnt; ++idx) {
if (ret != MEDIA_VISION_ERROR_NONE)
throw runtime_error("Fail to get object detection bound box.");
- _output_data.rects.push_back(rect);
+ _output_data._rects.push_back(rect);
}
return _output_data;
AutoZoomResult autozoom_result;
vector<Rect> rects;
- if (output_data._type == ResultType::OBJECT_DETECTION) {
- auto &result = static_cast<OdResultType &>(output_data);
- rects = result.rects;
- autozoom_result.frame_number = result._frame_number;
- }
- else if (output_data._type == ResultType::FACE_DETECTION) {
- auto &result = static_cast<OdResultType &>(output_data);
- rects = result.rects;
- autozoom_result.frame_number = result._frame_number;
- }
+ if (output_data._type != ResultType::OBJECT_DETECTION &&
+ output_data._type != ResultType::FACE_DETECTION)
+ throw InvalidParameter("Invalid result type");
+ rects = output_data._rects;
+ autozoom_result.frame_number = output_data._frame_number;
autozoom_result.num_of_objects = rects.size();
for (size_t idx = 0; idx < rects.size(); ++idx) {