该算法使用区域邻域恢复图像中的选定区域。该功能可用于去除扫描照片上的灰尘和划痕,或去除静止图像或视频中不需要的物体。
void cv::inpaint (InputArray src, InputArray inpaintMask, OutputArray dst, double inpaintRadius, int flags)
src | 输入 8 位、16 位无符号或 32 位浮点 1 通道或 8 位 3 通道图像。 |
inpaintMask | 修复蒙版,8 位 1 通道图像。 非零像素表示需要修复的区域。 |
dst | 输出与 src 大小和类型相同的图像 |
inpaintRadius | 算法考虑的每个修复点的圆形邻域的半径。 |
flags | 可以是 cv::INPAINT_NS 或 cv::INPAINT_TELEA 的修复方法 |
opencv\modules\photo\src\inpaint.cpp
static void
icvInpaint( const CvArr* _input_img, const CvArr* _inpaint_mask, CvArr* _output_img,
double inpaintRange, int flags )
{
cv::Ptr<CvMat> mask, band, f, t, out;
cv::Ptr<C