#include <iostream.h> // cin
#include <windows.h>
#include <math.h>
//#include "tracking.h"
#define rows 480      //pocet radku obrazu
#define cols 640      //pocet sloupcu obrazu

//const promenne a datove typy
//const int rows=480,cols=640;  //mozno zmenit pokud ma obraz kamry jine rozmery
typedef short int PICTURE[rows][cols];
typedef float LINE[2];
//picture musi mit velikost podle skutecnych dat snimanych kamerou, stejne jako rows a cols
//pracuje se s adresou obrazovych bodu v pameti, pri nedodrzeni presnych rozmeru aplikace spadne
//deklarace funkci
char* pokus(void);                                 //pokus
void show(PICTURE picture,unsigned  char* pixel);  //vykresleni matice picture
void read(PICTURE picture,unsigned  char* pixel,int kanal=0);  //nacteni dat do picture
void thresholding2(PICTURE obraz,int kanal,int minimum_t=15,int r=rows,int s=cols);    //prahovani s aut prahem
void noisefilter(PICTURE obraz,int r=rows,int s=cols);  //filtr sumu prumerovanim
void sobel2(PICTURE obraz,int minimum_t=30,int r=rows,int s=cols);  // sobeluv operator 3x3 s detekci prahu
int GetCrossNumber(PICTURE obraz,LINE primka,int con);  //Načtení čísla křižovatky
void MarkPosLine(PICTURE obraz,int max,int min);        //Označení středů čar
void Transform(/*LINE primka11,LINE primka22,*/LINE primka33,LINE primka44,int *con1,int *con2); //Rozdělení na P1 a P2
int Cal(PICTURE obraz,int *max,int *min);      //Kalibrace šířky čáry
float smer_h(LINE primka,int r=rows,int s=cols);   //určení směru podle P1
float smer_kolmy_h(LINE primka,int r=rows,int s=cols);  //určení směru podle P2
float kam_h(LINE primka1,LINE primka2,int con1,int con2,int cesta,bool *je_kriz);   //Finální určení směru, rozpoznávání křižovatek
void hough(PICTURE picture,LINE primka1,LINE primka2,int *con1,int *con2,int b_row=0,int b_col=0,int e_row=rows,int e_col=cols,int row=rows,int col=cols);    //Houghova transformace, je možno zvolit i část obrazu
int CrossPos(LINE primka1,LINE primka2,int *c_row,int *c_col); //Místo průsečíku přímek
void ColorProc(PICTURE picture,unsigned  char* pixel,int kanal=0,float comp=1);  //Barevné předzpracování, míchání kanálů
int Speed(int speed_max,int speed_min,int crosspos_index,int con1,int con2,int uhel); //Ovládání rychlosti
