边缘平滑和充满iOS的opencv内部轮廓

我正尝试在opencv的帮助下以不同的强度晒黑人的皮肤。 我已经确定了人体皮肤,并改变了这些像素的色调。 但并不顺利。

ScreenShot 1

左上方 – 原始图像右上方 – 原始图像的饱和通道左下方 – 灰度掩模标识原始图像上的皮肤位置右下方 – 颜色灰度变化的结果图像位于蒙版中的像素。

现在我的问题是,在蒙版图像中,由于原始图像中色调或亮度的变化而留下一些空白。 这就是为什么这些部分在结果图像中被遗漏的原因。 谁能告诉我如何填补面具图像的小缺口?

掩码图像中的差距

另一个如果有人能帮助我平滑我的鞣制面具的边缘将帮助我很多。 看到下面的参考图片,

夏普鞣制的面具边缘

提前致谢。

怎么样?

morphologyEx(grey,grey,MORPH_CLOSE,getStructuringElement( MORPH_ELLIPSE,Size(7,7))); 

虽然剪影合并为左手

简单

编辑:稍微牵涉更多

 Mat tmp=grey.clone(); morphologyEx(tmp,tmp,MORPH_GRADIENT,getStructuringElement(MORPH_ELLIPSE,Size(3,3))); bitwise_not(tmp,tmp); Mat smallholes=Mat::zeros(tmp.size(), CV_8UC1); vector<vector<Point>> contours; findContours(tmp,contours,CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE); for(int i = 0; i < contours.size(); i++) { double area = contourArea(Mat(contours[i])); if(area<100) drawContours(smallholes, contours, i, 255, -1); } Mat done; bitwise_or(grey,smallholes,done); morphologyEx(done,done,MORPH_CLOSE,getStructuringElement(MORPH_ELLIPSE,Size(3,3))); 

长