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

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);
}

}

OPENCV3学习日志(一)————图像修补:inpaint()函数_第1张图片

OPENCV3学习日志(一)————图像修补:inpaint()函数_第2张图片

你可能感兴趣的:(OPENCV3学习)