Tino Hager
2018-06-23 00903aebd3d4979ff5128c981d2f13e5595454c6
src/yolo_v2_class.cpp
@@ -22,6 +22,51 @@
#define FRAMES 3
int max_objects() { return C_SHARP_MAX_OBJECTS; }
static Detector* detector;
//static std::unique_ptr<Detector> detector;
int init(const char *configurationFilename, const char *weightsFilename, int gpu) {
    std::string configurationFilenameString;
    configurationFilenameString = configurationFilename;
    std::string weightsFilenameString;
    weightsFilenameString = weightsFilename;
    detector = new Detector(configurationFilenameString, weightsFilenameString, gpu);
    return 1;
}
int detect_image(const char *filename, bbox_t_container &container) {
    std::string filenameString;
    filenameString = filename;
    std::vector<bbox_t> detection = detector->detect(filenameString);
    for (size_t i = 0; i < detection.size() && i < C_SHARP_MAX_OBJECTS; ++i)
        container.candidates[i] = detection[i];
    return detection.size();
}
int detect_image2(const uint8_t* data, const size_t data_length, bbox_t_container &container) {
#ifdef OPENCV
    std::vector<char> vdata(data, data + data_length);
    cv::Mat image = imdecode(cv::Mat(vdata), 1);
    std::vector<bbox_t> detection = detector->detect(image);
    for (size_t i = 0; i < detection.size() && i < C_SHARP_MAX_OBJECTS; ++i)
        container.candidates[i] = detection[i];
    return detection.size();
#else
    return -1;
#endif   // OPENCV
}
int dispose() {
    detector->~Detector();
    //detector.reset();
    return 1;
}
#ifdef GPU
void check_cuda(cudaError_t status) {
   if (status != cudaSuccess) {
@@ -119,6 +164,10 @@
   detector_gpu_t &detector_gpu = *static_cast<detector_gpu_t *>(detector_gpu_ptr.get());
   return detector_gpu.net.h;
}
YOLODLL_API int Detector::get_net_color_depth() const {
   detector_gpu_t &detector_gpu = *static_cast<detector_gpu_t *>(detector_gpu_ptr.get());
   return detector_gpu.net.c;
}
YOLODLL_API std::vector<bbox_t> Detector::detect(std::string image_filename, float thresh, bool use_mean)