我正在尝试使用cv :: Mat类的'forEach'函数对图像的每个像素进行操作。但出现内存异常错误。
我的源图像(在HLS中)的typedef HLSPixel为double的3d点。 我已经创建了一个带有operator()重载的类。
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.
}
我希望图像可以通过operator()处理,但是它只会崩溃:(。