как использовать функцию forEach с оператором () - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь выполнить операцию для каждого пикселя изображения с помощью функции 'forEach' класса cv :: Mat. но я получаю ошибку исключения памяти.

У меня есть исходное изображение (в HLS) с typedef HLSPixel из 3d-точки double. Я создал класс с оператором () перегруженным.

typedef cv::Point3_<double> HLSPixel;

struct Quantize
{
    void operator()(HLSPixel& in, const int* position ) const 
    {
        if (in.y < 30)
        {
            in.y = 0;
        }
        else if(in.y > 225)
        {
            in.y = 255;
        }
        else
        {
            in.z /= 25;
            in.z *= 25;
        }
    }
};
void main()
{
    cv::VideoCapture vid("video.mp4")
    cv::Mat hls;
    cv::Mat bgr_frame;

    vid >> bgr_frame;

    cv::cvtColor(bgr_frame, hls, cv::COLOR_BGR2HLS);

    hls.forEach<HLSPixel, Quantize>(Quantize());//it crashes here.

}


Я ожидаю, что изображение будет обработано оператором (), но оно просто вылетает: (.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...