You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.7 KiB
60 lines
1.7 KiB
// License: Apache 2.0. See LICENSE file in root directory.
|
|
// Copyright(c) 2019 Intel Corporation. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "base-detection.h"
|
|
|
|
|
|
namespace openvino_helpers
|
|
{
|
|
/*
|
|
Detects object bounding boxes in an image.
|
|
|
|
Can take any object detection model with a single input layer (type="Input") and
|
|
a single output layer ("DetectionOutput").
|
|
*/
|
|
struct object_detection : public base_detection
|
|
{
|
|
public:
|
|
struct Result
|
|
{
|
|
int label;
|
|
float confidence;
|
|
cv::Rect location;
|
|
};
|
|
|
|
private:
|
|
// User arguments via the ctor
|
|
double _detection_threshold;
|
|
|
|
// Intermediates and helpers
|
|
std::string _input_layer_name;
|
|
size_t _input_width; // dimensions in the model
|
|
size_t _input_height;
|
|
std::string _im_info_name; // optional
|
|
size_t _im_info_size;
|
|
std::string _output_layer_name;
|
|
size_t _max_results;
|
|
int _n_enqued_frames;
|
|
float _width; // of the queued image
|
|
float _height;
|
|
|
|
public:
|
|
object_detection( const std::string &pathToModel,
|
|
double detectionThreshold,
|
|
bool isAsync = true,
|
|
int maxBatch = 1, bool isBatchDynamic = false,
|
|
bool doRawOutputMessages = false );
|
|
|
|
InferenceEngine::CNNNetwork read_network() override;
|
|
void submit_request() override;
|
|
|
|
void enqueue( const cv::Mat &frame );
|
|
std::vector< Result > fetch_results();
|
|
|
|
float get_width() const { return _width; }
|
|
float get_height() const { return _height; }
|
|
};
|
|
}
|