Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用查找表/级别映射(OpenCV)平滑轮廓_C++_Opencv_Image Processing_Lookup Tables - Fatal编程技术网

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,轮廓线);

您是否认为只应用膨胀过滤器(以及随后的模糊):

这可能是一个更简单、更好的解决方案。就你而言,我怀疑在这种情况下是否有好的做法。我不确定这是个好办法