C++ 使用查找表/级别映射(OpenCV)平滑轮廓
我正在尝试平滑由C++ 使用查找表/级别映射(OpenCV)平滑轮廓,c++,opencv,image-processing,lookup-tables,C++,Opencv,Image Processing,Lookup Tables,我正在尝试平滑由OpenCV的drawcourts()方法绘制的锯齿状轮廓。我将高斯模糊应用于轮廓,然后尝试使用查找表来映射像素强度 但是,我不知道在查找表中使用什么值。现在我只是在猜测任意数字。我制作了一个小模型:前两幅图像是直接来自OpenCV的结果。最后一幅图像是通过Photoshop的级别功能实现的。正如你所看到的,它更平滑 如何知道在查找表中使用哪些值 std::vector<char> lut(256); for (int i = 0; i <= 255; ++i)
OpenCV的drawcourts()方法绘制的锯齿状轮廓。我将高斯模糊应用于轮廓,然后尝试使用查找表来映射像素强度
但是,我不知道在查找表中使用什么值。现在我只是在猜测任意数字。我制作了一个小模型:前两幅图像是直接来自OpenCV的结果。最后一幅图像是通过Photoshop的级别功能实现的。正如你所看到的,它更平滑
如何知道在查找表中使用哪些值
std::vector<char> lut(256);
for (int i = 0; i <= 255; ++i) {
if(i >= 75) lut[i] = 255;
else if (i <= 25) lut[i] = 0;
else if (i < 75 && i > 25) lut[i] = i;
}
cv::LUT(contoursOverlay, lut, contoursOverlay);
std::向量lut(256);
对于(int i=0;i=75)lut[i]=255;
如果(i 25)lut[i]=i;
}
cv::LUT(轮廓线,LUT,轮廓线);
您是否认为只应用膨胀过滤器(以及随后的模糊):
这可能是一个更简单、更好的解决方案。就你而言,我怀疑在这种情况下是否有好的做法。我不确定这是个好办法