我正在尝试平滑一些轮廓边缘,以免它们变得参差不齐。到目前为止,我已经将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/