Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- GNU nano 2.0.9 File: edgefinder.py
- import Image
- import ImageFilter
- def edgemap(path):
- thresh=60
- im = Image.open(path).convert("L")
- width=im.size[0]
- length=im.size[1]
- #im.show()
- im=im.filter(ImageFilter.BLUR)
- #im.show()
- im=im.filter(ImageFilter.SHARPEN)
- #im.show()
- raw_data=list(im.getdata())
- hist_16bin=[0]*16
- for i in range(len(raw_data)):
- hist_16bin[raw_data[i]/16]=hist_16bin[raw_data[i]/16]+1
- #print raw_data
- print hist_16bin
- x_mask=[[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]]
- y_mask=[[1, 2, 1], [0, 0, 0], [-1, -2, -1]]
- edge_data=[0]*len(raw_data)
- for i in range(len(raw_data)):
- if (not(i<width or i>(width*length)-width or i%width==0 or (i+1)%width==0)):
- kernel=[[raw_data[i-(width+1)], raw_data[i-width], raw_data[i-(width+1)]],
- [raw_data[i-1], raw_data[i], raw_data[i+1]],
- [raw_data[i+(width-1)], raw_data[i+width], raw_data[i+(width+1)]]]
- grad_x=gradient(kernel, x_mask)
- grad_y=gradient(kernel, y_mask)
- grad=abs(grad_x)+abs(grad_y)
- if (grad>thresh):
- edge_data[i]=255
- edge_str="".join(chr(x) for x in edge_data)
- edge_img=Image.frombuffer("L", im.size, edge_str, "raw", "L", 0, 1)
- [ line 1/51 (1%), col 13/13 (100%), char 12/1528 (0%) ]
- ^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
- ^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement