如何编写查找 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);
我试图平滑一些轮廓边缘,使它们不那么参差不齐。到目前为止,我已经对轮廓应用了 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);