Я пытаюсь выполнить операцию для каждого пикселя изображения с помощью функции '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.
}
Я ожидаю, что изображение будет обработано оператором (), но оно просто вылетает: (.