Skip to content

Instantly share code, notes, and snippets.

@fazd
Created November 7, 2017 01:35
Show Gist options
  • Save fazd/a8ba4dc9c2ab18bb5297507d6ea72467 to your computer and use it in GitHub Desktop.
Save fazd/a8ba4dc9c2ab18bb5297507d6ea72467 to your computer and use it in GitHub Desktop.
import numpy as np
import cv2
from itertools import *
from os import listdir
from os.path import isfile, join
def guardar_imagen(img,cont):
k='byw/'+str(cont)+'.png'
cv2.imwrite(k,img)
def cargar_imagenes():
mypath = 'test2'
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
images = np.empty(len(onlyfiles), dtype=object)
for n in range(0, len(onlyfiles)):
images[n] = cv2.imread(join(mypath, onlyfiles[n]))
print(len(images))
return images
def imagen_to_black_and_white(img,cont):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#cv2.imshow('gray',gray)
#cv2.waitKey(0)
minimo=min_colors(gray)
im_bw=change_color(gray,minimo)
#cv2.imshow('byw', im_bw)
#cv2.waitKey(0)
guardar_imagen(im_bw,cont)
return im_bw
def min_colors(img):
filas, colum = img.shape
min=255
for i in range(filas):
for j in range(colum):
if(min>img[i,j]):
min=img[i,j]
#print('min=',min)
return min
def change_color(img,minimo):
filas, colum = img.shape
for i in range(filas):
for j in range(colum):
if (img[i, j]<minimo+25):
img[i, j]=255
else:
img[i,j]=0
return img
def dist (x,y):
x1,y1=x
x2,y2=y
return np.sqrt(pow((x1-x2), 2) + pow((y1-y2), 2))
def media(dicc):
tam = len(dicc)
total=0
for i in range(tam):
total=total+dicc[i]
total=total/tam
return total
def varianza(media,dicc):
tam=len(dicc)
total=0
for i in range(tam):
total=total+pow((media-dicc[i]),2)
total=total/tam
return total
def coeficiente_varianza(media,varianza):
return (varianza/media)
def crear_Diccionario(image,num):
filas, colum, channels=image.shape
diccionario = {}
img=imagen_to_black_and_white(image,num)
elemi1=0
puntos=[]
for i in product(range(0,filas),range(elemi1,colum)):
if(img[i]==0):
puntos.append(i)
limite=len(puntos)
lista=[]
for i in range(0,limite,1):
for j in range(i+1,limite,1):
lista.append(dist(puntos[i],puntos[j]))
return lista
def principal(image,cont):
lista=crear_Diccionario(image,cont)
med=media(lista)
var=varianza(med,lista)
coef=coeficiente_varianza(med,var)
#print('media=',med)
#print('varianza=',var)
#print('coef=',coef)
print(cont)
return (med,var,coef)
imagenes=cargar_imagenes()
var= []
med = []
co=[]
cont=1
for i in range(len(imagenes)):
#print('imagen:',cont)
x,y,z=principal(imagenes[i],cont)
cont=cont+1
var.append(x)
med.append(y)
co.append(z)
for i in range(i,cont-1):
print('imagen',i,':=',var[i],' ',med[i],co[i])
print('fin')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment