OPENCV3学习日志(一)————图像修补:inpaint()函数

  • Post author:
  • Post category:其他


c++: void inpaint(InputArray src, InputArray inpaintMask, OutputArray dst, double inpaintRadius, int flags)

第一个参数:需要输入的图像,要求为8位单通道或者三通道图像

第二个参数:修复掩膜, 八位单通道,非零像素表示要修补的区域。

第三个参数:运行的结果要和原图像有一样的尺寸。

第四个参数:需要修补的每个点的圆形邻域,为修复算法的参考半径

第五个参数:修补方法的标识符,有两种: INPAINT_NS(基于Navier-Stokes方程的方法), INPAINT_TELEA(Alexandru Telea方法)。

下面粘贴一下测试的核心代码,以及效果图

void onMouse(int event, int x, int y, int flag, void*) {




if (event == EVENT_LBUTTONDOWN || !(flag & EVENT_FLAG_LBUTTON)) {




inpaint(badImg, coverImg, dstImg, 3, INPAINT_TELEA);



first = Point(-1, -1);



imshow(WINDOW_NAME3, dstImg);



}



else if (event == EVENT_LBUTTONUP)



first = Point(x, y);



else if (event == EVENT_MOUSEMOVE) {




Point last = Point(x, y);



if (first.x < 0)



first = last;



line(badImg, first, last, Scalar(255, 255, 255),8);



line(coverImg, first, last, Scalar(255, 255, 255),8);



first = last;



imshow(WINDOW_NAME2, badImg);



}

}





版权声明:本文为weixin_40918019原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。