我正在尝试平滑一些轮廓边缘,以免它们变得参差不齐。到目前为止,我已经将cv::GuassianBlur()应用于轮廓。我发现了一个有趣的stackoverflow answer,它可以通过使用带有 LUT 的查找表来“阈值”我的模糊轮廓而有所帮助。

但是,我不确定如何正确编写查找表。我找不到任何清晰的示例。任何帮助表示赞赏。谢谢

最佳答案

您应该简单地传递包含256个元素的std::vector<char>作为lut参数。此 vector 中索引为i的元素将为值i的所有像素指定输出值。

例如,如果要将图像阈值限制为80(大于或等于80的所有图像变为全白,而其他所有图像变为全黑),则可以编写如下内容:

std::vector<char> lut(256);
for (int i = 0; i < 256; ++i) {
    lut[i] = i >= 80 ? 255 : 0;
}

cv::LUT(src, lut, dst);

关于c++ - 如何编写查找表以映射像素强度(OpenCV),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29573637/

10-11 18:35