Conflicts: cmake/OpenCVConfig.cmake cmake/OpenCVLegacyOptions.cmake modules/contrib/src/retina.cpp modules/gpu/doc/camera_calibration_and_3d_reconstruction.rst modules/gpu/doc/video.rst modules/gpu/src/speckle_filtering.cpp modules/python/src2/cv2.cv.hpp modules/python/test/test2.py samples/python/watershed.py
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python
 | 
						|
 | 
						|
'''
 | 
						|
Distance transform sample.
 | 
						|
 | 
						|
Usage:
 | 
						|
  distrans.py [<image>]
 | 
						|
 | 
						|
Keys:
 | 
						|
  ESC   - exit
 | 
						|
  v     - toggle voronoi mode
 | 
						|
'''
 | 
						|
 | 
						|
 | 
						|
import numpy as np
 | 
						|
import cv2
 | 
						|
 | 
						|
from common import make_cmap
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    import sys
 | 
						|
    try:
 | 
						|
        fn = sys.argv[1]
 | 
						|
    except:
 | 
						|
        fn = '../cpp/fruits.jpg'
 | 
						|
    print __doc__
 | 
						|
 | 
						|
    img = cv2.imread(fn, 0)
 | 
						|
    if img is None:
 | 
						|
        print 'Failed to load fn:', fn
 | 
						|
        sys.exit(1)
 | 
						|
 | 
						|
    cm = make_cmap('jet')
 | 
						|
    need_update = True
 | 
						|
    voronoi = False
 | 
						|
 | 
						|
    def update(dummy=None):
 | 
						|
        global need_update
 | 
						|
        need_update = False
 | 
						|
        thrs = cv2.getTrackbarPos('threshold', 'distrans')
 | 
						|
        mark = cv2.Canny(img, thrs, 3*thrs)
 | 
						|
        dist, labels = cv2.distanceTransformWithLabels(~mark, cv2.DIST_L2, 5)
 | 
						|
        if voronoi:
 | 
						|
            vis = cm[np.uint8(labels)]
 | 
						|
        else:
 | 
						|
            vis = cm[np.uint8(dist*2)]
 | 
						|
        vis[mark != 0] = 255
 | 
						|
        cv2.imshow('distrans', vis)
 | 
						|
 | 
						|
    def invalidate(dummy=None):
 | 
						|
        global need_update
 | 
						|
        need_update = True
 | 
						|
 | 
						|
    cv2.namedWindow('distrans')
 | 
						|
    cv2.createTrackbar('threshold', 'distrans', 60, 255, invalidate)
 | 
						|
    update()
 | 
						|
 | 
						|
 | 
						|
    while True:
 | 
						|
        ch = 0xFF & cv2.waitKey(50)
 | 
						|
        if ch == 27:
 | 
						|
            break
 | 
						|
        if ch == ord('v'):
 | 
						|
            voronoi = not voronoi
 | 
						|
            print 'showing', ['distance', 'voronoi'][voronoi]
 | 
						|
            update()
 | 
						|
        if need_update:
 | 
						|
            update()
 | 
						|
    cv2.destroyAllWindows()
 |