#pragma once
#include <opencv2/opencv.hpp>

struct SampleStrip{
    int length;
    cv::Point2f vecX;
    cv::Point2f vecY;

    int nStart;
    int nStop;

    cv::Mat iplStripe;
};

class SobelFilter{

    public:
        void drawStrips(cv::Mat output);
        cv::Point2d getSubPixelPoint(cv::Point delimiter, SampleStrip sample,cv::Mat input);
        SampleStrip getSampleStrip(float dx, float dy);

    private:
        int samplePixel(const cv::Mat &pSrc, const cv::Point2f &p);
        cv::Point2d findSubPixelPoint(cv::Mat iplPixel, SampleStrip strip);
        std::vector<SampleStrip> sampleStrips;
        std::vector<char> samples;
};
