forked from JanekOstendorf/THOMAS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLaserMeasurement.h
93 lines (64 loc) · 1.76 KB
/
LaserMeasurement.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#pragma once
/*
-- LaserMeasurement-Klasse :: HEADER --
Definiert die LaserMeasurement
Diese Klasse misst die Entfernung zum Laserpunkt
*/
/* INCLUDES */
// OpenCV-Klassen
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
// Vector-Klasse
#include <vector>
/* KONSTANTEN */
// Kamera Einstellungen
#define CAMERA_WIDTH 1280
// Startpunkt (Y) des Erkennungsbalkens
#define BAR_START 330
// Höhe des Erkennungsbalkens
#define BAR_HEIGHT 60
// Mindest- und Maximalgröße des Laserpunktes
#define LASER_MIN_WIDTH 1
#define LASER_MAX_WIDTH 80
// Mindesthelligkeit des Punktes
#define MIN_BRIGHTNESS 740
// Beginn des Kontrastüberprüfungsmittelwertstreifens
#define AVG_CHECK_OFFSET 2
// Breite von dem s.o.
#define AVG_CHECK_WIDTH 20
// Mindestkontrast
#define AVG_CHECK_BRIGHTNESS_OFFSET 50
// PI
#define PI 3.1415926535
// Abstand zwischen Laser und Kamera
#define LASER_DISTANCE 11.5
// Laserwinkel (siehe Zeichnung)
#define ALPHA 24 * PI / 180
// Kamerawinkel (siehe Zeichnung)
#define GAMMA 52.5 * PI / 180
/* KLASSE */
namespace THOMAS
{
class LaserMeasurement
{
private:
// Gibt die Laserpositon zurück
int GetLaserPosition(cv::Mat frame, int startY, int endY);
// Ermittelt die Helligkeit für einen bestimmten Abschnitt
int GetBrightnessAvg(std::vector<int> bar, int avgStart, int avgStop);
// Die letzte Laserposition
int _lastLaserPosition = -1;
// Der letzte Abstandswert
int _lastDistance = -1;
public:
// Konstruktor
LaserMeasurement();
// Ermittelt die Entfernung in einem Image
int GetDistanceFromImage(cv::Mat frame);
// Gibt die letzte Laserposition zurück
int GetLastLaserPosition();
// Gibt den letzten Abstandswert zurück
int GetLastDistance();
};
}