-
Notifications
You must be signed in to change notification settings - Fork 0
/
memPixToImage.py
99 lines (92 loc) · 1.95 KB
/
memPixToImage.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
from tkinter.filedialog import askopenfilename
from PIL import Image
from PIL import ImageOps
import time
"""
Carga una imagen en binario
"""
def openImagen(ruta):
temp=[]
f=open(ruta, "r")
fl =f.readlines()
for x in fl:
temp.append(x[:len(x)-1])
return temp
"""
Guarda binario desde archivo
"""
def writeImage(datos, ruta):
f= open(ruta,"w+")
for i in range(len(datos)):
f.write("%s\n" % datos[i])
return True
"""
Calcula el promedio de una tupla / pixel rgb
"""
def getProm(tupla):
temp=0
for ele in tupla:
temp+=ele
return temp//3
"""
Se usa para tomar la la ruta y el nombre del archivo
"""
def getRuta(ruta):
temp=""
for letra in ruta:
if(letra=="."):
break
else:
temp+=letra
return temp
"""
Convierte una imagen a mem pix (1 bit)
"""
def toMemPix():
filename = askopenfilename()
im = Image.open(filename)
pix = im.load()
ancho, alto = (im.size)
pix=im.load()
print(im.size)
mem=[]
umbral=155
for j in range(0, alto):
temp=""
for i in range (0, ancho):
prom=getProm(pix[i,j])
if prom<umbral:
tempPix="00"
tempPix+=temp
temp=tempPix
else:
tempPix="01"
tempPix+=temp
temp=tempPix
mem.append(temp)
ruta=getRuta(filename)+"_mem_pix.bin"
writeImage(mem, ruta)
#toMemPix() #para hacer un archivo de umbralizacion de prueba
try:
ancho,alto=(320, 240);
img = Image.new('RGB', (ancho,alto), color = 'red') # imagen base
pix=img.load()
filename = askopenfilename()
memPix=openImagen(filename)
inicio = int(round(time.time() * 1000))
i=0 # hasta 320
for j in range(alto):
for k in range(1, ancho*2, 2):
if memPix[j][k]=="1":
pix[i,j]=(255,255,255)
else:
pix[i,j]=(0,0,0)
i+=1
i=0
img=ImageOps.mirror(img) # verificar si es necesario
img.save(getRuta(filename)+"_umbralizado.bmp")
fin = int(round(time.time() * 1000))
cronometro=fin-inicio
print(">> Conversion completa, tiempo transcurrido %d ms" % cronometro)
except:
print(">> La imagen no pudo ser cargada correctamente")