blob: ad0435037f7791e802683f75c80df6b153fa3270 [file] [log] [blame]
Filip Kujawadc7d47c2023-04-08 16:16:51 -07001#ifndef Y2023_VISION_YOLOV5_H_
2#define Y2023_VISION_YOLOV5_H_
3
Filip Kujawadc7d47c2023-04-08 16:16:51 -07004#include <chrono>
5#include <cmath>
6#include <cstdint>
7#include <fstream>
8#include <iostream>
9#include <opencv2/core.hpp>
10#include <opencv2/dnn.hpp>
11#include <opencv2/highgui/highgui.hpp>
12#include <opencv2/imgcodecs.hpp>
13#include <opencv2/imgproc.hpp>
14#include <vector>
15
16namespace y2023 {
17namespace vision {
18
19struct Detection {
20 cv::Rect box;
21 double confidence;
22 int class_id;
23};
24
25class YOLOV5 {
26 public:
Filip Kujawa26a23662023-04-08 16:19:13 -070027 virtual ~YOLOV5();
28
Filip Kujawadc7d47c2023-04-08 16:16:51 -070029 // Takes a model path as string and loads a pre-trained
30 // YOLOv5 model from the specified path.
Filip Kujawa26a23662023-04-08 16:19:13 -070031 virtual void LoadModel(const std::string path);
Filip Kujawadc7d47c2023-04-08 16:16:51 -070032
33 // Takes an image and returns a Detection.
Filip Kujawa26a23662023-04-08 16:19:13 -070034 virtual std::vector<Detection> ProcessImage(cv::Mat image);
Filip Kujawadc7d47c2023-04-08 16:16:51 -070035};
36
Filip Kujawa26a23662023-04-08 16:19:13 -070037std::unique_ptr<YOLOV5> MakeYOLOV5();
38
Filip Kujawadc7d47c2023-04-08 16:16:51 -070039} // namespace vision
40} // namespace y2023
41
42#endif // Y2023_VISION_YOLOV5_H_