From 00903aebd3d4979ff5128c981d2f13e5595454c6 Mon Sep 17 00:00:00 2001
From: Tino Hager <tino.hager@nager.at>
Date: Sat, 23 Jun 2018 09:02:37 +0000
Subject: [PATCH] .NET/C# support integration
---
src/yolo_v2_class.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/src/yolo_v2_class.cpp b/src/yolo_v2_class.cpp
index faaf8d1..6147e3c 100644
--- a/src/yolo_v2_class.cpp
+++ b/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) {
--
Gitblit v1.10.0