#include <iostream>
#include <opencv2/opencv.hpp>
#include <utils.h>
#include <vector>


using namespace cv;
using namespace std;

class Processing
{
private:
    /* data */
    bool checkIntersection(const std::vector<std::vector<Point>>& lines, const std::vector<Point>& outline);
public:
    Processing(/* args */);
    // To do:
    // Binärbild
    // Linien finden (HoughLinesP())
    // Entscheidung über wie viele Linien und welche Art von Linien erkannt werden (abknickende Linien)
    // End und Anfangspunkt analysieren und Winkel und Ausrichtung der Linie extrahieren (Abstand des untersten Punktes von der Mitte)
    ~Processing();

    void processImage(Mat& inputPicture, int thresholdBinary, int gaussKernelSize);
    void filterReflections(FrameData& frameData);
    FrameData calculateLineSegments(Mat& inputPicture, const cv::Rect& roi);
    void calcAngles(FrameData &data, int imageColums, int imageRows, bool turnLeft);
};