forked from piergo98/Ping-pong-robot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Robot_camera.h
66 lines (51 loc) · 2.68 KB
/
Robot_camera.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
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <allegro.h>
#include <pthread.h>
#include <time.h>
#include "PTask.h"
//------------------------------------------------------------------------------
#define TARGET_COLOR 0xfa6717 //colore pallina
#define THRESHOLD 1 //numero minimo di pixel per riconoscere la pallina
#define DIM 3 //dimensioni buffer per memorizzare i valori passati del centro della pallina
#define BEFORE 0 //centro precedente
#define NOW 1 //centro attuale
#define NEXT 2 //centro successivo
#define DELTA_X 40 //incremento delle dimensioni della finestra di ricerca lungo x
#define DELTA_Z 30 //incremento delle dimensioni della finestra di ricerca lungo x
#define SIZE_X 320 //lunghezza iniziale finestra di ricerca
#define SIZE_Z 360 //altezza iniziale finestra di ricerca
#define RESIZE_X 50 //lunghezza finestra di ricerca appena trova la pallina
#define RESIZE_Z 50 //altezza finestra di ricerca appena trova la pallina
//------------------------------------------------------------------------------
// PUNTI TAVOLO VISTO DALL'ALTO
//------------------------------------------------------------------------------
#define P1_X 160 //(X2,Z2) |-----------------| (X3,Z3)
#define P1_Z 548 // | |
#define P2_X 160 // | |
#define P2_Z 188 // | |
#define P3_X 480 // | |
#define P3_Z 188 // | |
#define P4_X 480 // | |
#define P4_Z 548 //(X1,Z1) |-----------------| (X4,Z4)
#define HALF_Z 368 //metà campo lungo z
#define HALF_X 320 //metà campo lungo x
//------------------------------------------------------------------------------
struct win{ /* struttura che definisce la finestra di ricerca dell'oggetto */
int x0;
int z0;
int xsize;
int zsize;
};
struct coord{ /* struttura che contiene le coordinate di un punto */
int x;
int z;
};
struct coord buffer[DIM];
struct win window; //finestra di ricerca
void init_camera(void);
int centroid(struct win w, struct coord *target); /* Calcola il centro di un certo target, specificato dal colore */
void prediction(struct win *w, struct coord memory[DIM]); /* Predice il centro successivo e aggiorna la finestra di ricerca */
void* camera(void* arg); /* Task camera */
void *miss_stamp(void *arg);