3 from opencv.cv import *
4 from opencv.highgui import *
6 wndname = "Distance transform";
7 tbarname = "Threshold";
19 # define a trackbar callback
20 def on_trackbar( edge_thresh ):
22 cvThreshold( gray, edge, float(edge_thresh), float(edge_thresh), CV_THRESH_BINARY );
24 cvDistTransform( edge, dist, CV_DIST_L2, CV_DIST_MASK_5, None, None );
26 cvConvertScale( dist, dist, 5000.0, 0 );
27 cvPow( dist, dist, 0.5 );
29 cvConvertScale( dist, dist32s, 1.0, 0.5 );
30 cvAndS( dist32s, cvScalarAll(255), dist32s, None );
31 cvConvertScale( dist32s, dist8u1, 1, 0 );
32 cvConvertScale( dist32s, dist32s, -1, 0 );
33 cvAddS( dist32s, cvScalarAll(255), dist32s, None );
34 cvConvertScale( dist32s, dist8u2, 1, 0 );
35 cvMerge( dist8u1, dist8u2, dist8u2, None, dist8u );
36 cvShowImage( wndname, dist8u );
39 if __name__ == "__main__":
42 filename = "../c/stuff.jpg"
44 filename = sys.argv[1]
46 gray = cvLoadImage( filename, 0 )
48 print "Failed to load %s" % filename
51 # Create the output image
52 dist = cvCreateImage( cvSize(gray.width,gray.height), IPL_DEPTH_32F, 1 );
53 dist8u1 = cvCloneImage( gray );
54 dist8u2 = cvCloneImage( gray );
55 dist8u = cvCreateImage( cvSize(gray.width,gray.height), IPL_DEPTH_8U, 3 );
56 dist32s = cvCreateImage( cvSize(gray.width,gray.height), IPL_DEPTH_32S, 1 );
58 # Convert to grayscale
59 edge = cvCloneImage( gray );
62 cvNamedWindow( wndname, 1 );
65 cvCreateTrackbar( tbarname, wndname, edge_thresh, 255, on_trackbar );
68 on_trackbar(edge_thresh);
70 # Wait for a key stroke; the same function arranges events processing