X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=samples%2Fswig_python%2Finpaint.py;fp=samples%2Fswig_python%2Finpaint.py;h=51d004cef554e68efe04b92d3b81a1db864eb124;hb=e4c14cdbdf2fe805e79cd96ded236f57e7b89060;hp=0000000000000000000000000000000000000000;hpb=454138ff8a20f6edb9b65a910101403d8b520643;p=opencv diff --git a/samples/swig_python/inpaint.py b/samples/swig_python/inpaint.py new file mode 100755 index 0000000..51d004c --- /dev/null +++ b/samples/swig_python/inpaint.py @@ -0,0 +1,73 @@ +#!/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 ) +