magie di python per trovare i bordi
This commit is contained in:
parent
257b569d8d
commit
1fdf3b47e0
1 changed files with 41 additions and 0 deletions
41
edge_finder.py
Executable file
41
edge_finder.py
Executable file
|
@ -0,0 +1,41 @@
|
||||||
|
#!/usr/bin/env python2
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
import sys
|
||||||
|
import cv2
|
||||||
|
def show(img):
|
||||||
|
#cv2.namedWindow("immagine",cv2.WINDOW_AUTOSIZE)
|
||||||
|
cv2.imshow("immagine",img)
|
||||||
|
cv2.waitKey(0)
|
||||||
|
|
||||||
|
def contourIndex(lista):
|
||||||
|
# ritorna l'indice del contorno con perimetro maggiore
|
||||||
|
val=-1
|
||||||
|
index=0
|
||||||
|
for num, cont in enumerate(lista):
|
||||||
|
value=cv2.arcLength(cont,True)
|
||||||
|
if val<value:
|
||||||
|
val=value
|
||||||
|
index=num
|
||||||
|
return index
|
||||||
|
|
||||||
|
img=cv2.imread(sys.argv[1],cv2.CV_LOAD_IMAGE_GRAYSCALE)
|
||||||
|
#la riga successiva serve a rendere visualizzabile l immagine sul nostro pc
|
||||||
|
#img=cv2.resize(img,(350,262))
|
||||||
|
#assumendo che il background e nero nelle condizioni attuali (27/12/2016) del bookscanner il valore buono e 100
|
||||||
|
buono=155
|
||||||
|
mask=cv2.inRange(img,0,buono)
|
||||||
|
#show(mask)
|
||||||
|
mask=255-mask
|
||||||
|
contorni, hier =cv2.findContours(mask,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
|
||||||
|
bianco=np.zeros(mask.shape,dtype=np.uint8)
|
||||||
|
img=cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
|
||||||
|
|
||||||
|
# indexImportante indica il contorno piu grande, che crediamo sia quello del libro
|
||||||
|
indexImportante=contourIndex(contorni)
|
||||||
|
cv2.drawContours(img,contorni,indexImportante,255,thickness=3)
|
||||||
|
cv2.fillPoly(bianco,[contorni[indexImportante]],255)
|
||||||
|
show(bianco)
|
||||||
|
cv2.imwrite(sys.argv[2],bianco)
|
||||||
|
|
||||||
|
# vim: set ts=4 sw=4 et:
|
Loading…
Reference in a new issue