【发布时间】:2014-03-14 21:07:07
【问题描述】:
OpenCV 中是否有一种方法,它接受一个输入矩阵、一个输出矩阵和一个函数,并将这个函数应用于每个像素?例如“检查像素值,如果低于某个阈值,则将其设置为0,否则保持该值”之类的功能
我知道我可以遍历矩阵的像素并自己应用该函数,只是想知道是否有一个函数可以为我节省这项工作。
【问题讨论】:
标签: c++ opencv image-processing
OpenCV 中是否有一种方法,它接受一个输入矩阵、一个输出矩阵和一个函数,并将这个函数应用于每个像素?例如“检查像素值,如果低于某个阈值,则将其设置为0,否则保持该值”之类的功能
我知道我可以遍历矩阵的像素并自己应用该函数,只是想知道是否有一个函数可以为我节省这项工作。
【问题讨论】:
标签: c++ opencv image-processing
如果您担心性能问题,您可能会对以下链接感兴趣:
如果您使用灰度图像,您可以轻松创建合适的 LUT。
【讨论】:
您可以像这样应用 lambda 函数(假设为灰度图像):
std::for_each(mat.begin<uchar>(), mat.end<uchar>()
, [](uchar& pixel) {
/* do something with pixel */
});
但是,它实际上是一个循环。
编辑:如果您想对图像应用通用几何变换,可以使用remap。
【讨论】:
uchar,否则使用float,如果是实值。在 lambda 函数中,就地修改像素;无需退货。