+++ /dev/null
-#!/usr/bin/python
-from opencv.cv import *
-from opencv.highgui import *
-import sys
-
-inpaint_mask = None;
-img0 = None;
-img = None;
-inpainted = None;
-prev_pt = cvPoint(-1,-1);
-
-def on_mouse( event, x, y, flags, param ):
- global prev_pt
- if not img :
- return;
-
- if event == CV_EVENT_LBUTTONUP or not (flags & CV_EVENT_FLAG_LBUTTON):
- prev_pt = cvPoint(-1,-1);
- elif event == CV_EVENT_LBUTTONDOWN:
- prev_pt = cvPoint(x,y);
- elif event == CV_EVENT_MOUSEMOVE and (flags & CV_EVENT_FLAG_LBUTTON) :
- pt = cvPoint(x,y);
- if prev_pt.x < 0:
- prev_pt = pt;
- cvLine( inpaint_mask, prev_pt, pt, cvScalarAll(255), 5, 8, 0 );
- cvLine( img, prev_pt, pt, cvScalarAll(255), 5, 8, 0 );
- prev_pt = pt;
- cvShowImage( "image", img );
-
-if __name__=="__main__":
- filename = "../c/fruits.jpg";
- if len(sys.argv)>=2:
- filename = sys.argv[1]
-
- img0 = cvLoadImage(filename,-1)
- if not img0:
- print "Can't open image '%s'" % filename
- sys.exit(1);
-
- print "Hot keys:"
- print "\tESC - quit the program"
- print "\tr - restore the original image"
- print "\ti or ENTER - run inpainting algorithm"
- print "\t\t(before running it, paint something on the image)"
-
- cvNamedWindow( "image", 1 );
-
- img = cvCloneImage( img0 );
- inpainted = cvCloneImage( img0 );
- inpaint_mask = cvCreateImage( cvGetSize(img), 8, 1 );
-
- cvZero( inpaint_mask );
- cvZero( inpainted );
- cvShowImage( "image", img );
- cvShowImage( "watershed transform", inpainted );
- cvSetMouseCallback( "image", on_mouse, None );
-
- while True:
- c = cvWaitKey(0);
-
- if( c == '\x1b' or c=='q'):
- break;
-
- if( c == 'r' ):
- cvZero( inpaint_mask );
- cvCopy( img0, img );
- cvShowImage( "image", img );
-
- if( c == 'i' or c == '\012' ):
- cvNamedWindow( "inpainted image", 1 );
- cvInpaint( img, inpaint_mask, inpainted, 3, CV_INPAINT_TELEA );
- cvShowImage( "inpainted image", inpainted );