写一下修复图像划痕的代码,以为可以恢复师兄给的图像标定图。
但是没有效果。
用到的inpaint函数
Mat srcIma1, inpaintMask;
Point previousPoint(-1, -1);
//----- control the mouse to paint the white line---
static void On_Mouse(int event, int x, int y, int flags, void*)
{
if (event == EVENT_LBUTTONUP || !(flags & EVENT_FLAG_LBUTTON))
previousPoint = Point(-1, -1);
else if (event == EVENT_LBUTTONDOWN)
previousPoint = Point(x, y);
else if (event == EVENT_MOUSEMOVE && (flags & EVENT_FLAG_LBUTTON))
{
Point pt(x, y);
if (previousPoint.x < 0)
previousPoint = pt;
line(inpaintMask, previousPoint, pt, Scalar::all(255), 5, 8, 0);
line(srcIma1, previousPoint, pt, Scalar::all(255), 5, 8, 0);
previousPoint = pt;
imshow(WINDOW_NAME1, srcIma1);
}
}
int main()
{
//------input the original pic and initializated the Mask----
Mat srcIma = imread("C:\\Users\\chf\\Desktop\\课题组\\system_calibration\\data\\1.bmp", -1);
srcIma1 = srcIma.clone();
inpaintMask = Mat::zeros(srcIma1.size(), CV_8U);
imshow(WINDOW_NAME1, srcIma1);
Mat inpaintedImage;
inpaint(srcIma, inpaintMask, inpaintedImage, 10, INPAINT_NS);
imshow(WINDOW_NAME2, inpaintedImage);
waitKey(0);
return 0;
}
上面没有全部写出,因为只是想恢复自己的标定图