python cv3 compatibility

This commit is contained in:
boyska 2017-02-23 03:13:15 +01:00
parent 8e30e3fe36
commit fc6cffe2ba

View file

@ -3,13 +3,19 @@
import numpy as np import numpy as np
import sys import sys
import cv2 import cv2
cv_version = int(cv2.__version__.split('.')[0])
GRAY = cv2.CV_LOAD_IMAGE_GRAYSCALE if cv_version == 2 else cv2.IMREAD_GRAYSCALE
COLOR = cv2.CV_LOAD_IMAGE_COLOR if cv_version == 2 else cv2.IMREAD_COLOR
def show(img): def show(img):
#cv2.namedWindow("immagine",cv2.WINDOW_AUTOSIZE) #cv2.namedWindow("immagine",cv2.WINDOW_AUTOSIZE)
cv2.imshow("immagine",img) cv2.imshow("immagine", img)
cv2.waitKey(0) cv2.waitKey(0)
def contourIndex(lista): def contourIndex(lista):
# ritorna l'indice del contorno con perimetro maggiore # ritorna l'indice del contorno con perimetro maggiore
val=-1 val=-1
index=0 index=0
for num, cont in enumerate(lista): for num, cont in enumerate(lista):
@ -19,14 +25,17 @@ def contourIndex(lista):
index=num index=num
return index return index
img=cv2.imread(sys.argv[1],cv2.CV_LOAD_IMAGE_GRAYSCALE) img=cv2.imread(sys.argv[1], GRAY)
#img=cv2.imread(sys.argv[1],cv2.CV_LOAD_IMAGE_COLOR) #img=cv2.imread(sys.argv[1],cv2.CV_LOAD_IMAGE_COLOR)
#la riga successiva serve a rendere visualizzabile l immagine sul nostro pc #la riga successiva serve a rendere visualizzabile l immagine sul nostro pc
#img=cv2.resize(img,(350,262)) #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 (su 255) #assumendo che il background e nero nelle condizioni attuali (27/12/2016) del bookscanner il valore buono e 100 (su 255)
buono=100 buono=100
mask=cv2.inRange(img,buono,255) mask=cv2.inRange(img,buono,255)
contorni, hier =cv2.findContours(mask,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) if cv_version == 2:
contorni, hier = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
else:
_, contorni, hier = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
bianco=np.zeros(mask.shape,dtype=np.uint8) # crea un coso nero bianco=np.zeros(mask.shape,dtype=np.uint8) # crea un coso nero
# indexImportante indica il contorno piu grande, che crediamo sia quello del libro # indexImportante indica il contorno piu grande, che crediamo sia quello del libro
@ -34,10 +43,10 @@ indexImportante=contourIndex(contorni)
cv2.drawContours(img,contorni,indexImportante,255,thickness=3) cv2.drawContours(img,contorni,indexImportante,255,thickness=3)
cv2.fillPoly(bianco,[contorni[indexImportante]], 255) cv2.fillPoly(bianco,[contorni[indexImportante]], 255)
img=cv2.imread(sys.argv[1],cv2.CV_LOAD_IMAGE_COLOR) img=cv2.imread(sys.argv[1], COLOR)
img = cv2.bitwise_and(img, img, mask=bianco) img = cv2.bitwise_and(img, img, mask=bianco)
if len(sys.argv) > 2: if len(sys.argv) > 2:
cv2.imwrite(sys.argv[2],img) cv2.imwrite(sys.argv[2], img)
else: else:
show(img) show(img)