如何编写查找 table 来映射像素强度 (OpenCV)

How to write a lookup table to map pixel intensities (OpenCV)

我试图平滑一些轮廓边缘,使它们不那么参差不齐。到目前为止,我已经对轮廓应用了 cv::GuassianBlur()。我发现了一个有趣的 Whosebug answer that might help by using a lookup table with LUT 来解决 "threshold" 我模糊的轮廓。

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

您应该简单地传递一个包含 256 个元素的 std::vector<char> 作为 lut 参数。此向量中索引为 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);