parent
724cc5b481
commit
d3da43c8e5
3 changed files with 82 additions and 1 deletions
@ -0,0 +1,55 @@ |
||||
import numpy as np |
||||
import cv2, cv |
||||
from common import make_cmap |
||||
|
||||
help_message = '''USAGE: distrans.py [<image>] |
||||
|
||||
Keys: |
||||
ESC - exit |
||||
v - toggle voronoi mode |
||||
''' |
||||
|
||||
if __name__ == '__main__': |
||||
import sys |
||||
try: fn = sys.argv[1] |
||||
except: fn = '../cpp/fruits.jpg' |
||||
print help_message |
||||
|
||||
img = cv2.imread(fn, 0) |
||||
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.distanceTransform(~mark, cv.CV_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 = cv2.waitKey(50) |
||||
if ch == 27: |
||||
break |
||||
if ch == ord('v'): |
||||
voronoi = not voronoi |
||||
print 'showing', ['distance', 'voronoi'][voronoi] |
||||
update() |
||||
if need_update: |
||||
update() |
||||
|
Loading…
Reference in new issue