-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathanalize_jpg.py
121 lines (84 loc) · 3.24 KB
/
analize_jpg.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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# coding=utf-8
# ==============================================================================
"""
DESCRIPCION:
Analiza la composición de imagenes de cada clase
Empareja las observaciones por clase para que todas las clases tengan
la misma cantidad de imagenes por cada captura.
ENTRADA:
La carpata debe tener la siguiente estructura:
img_dir/label_0/A image0.jpeg
img_dir/label_0/B image1.jpg
...
img_dir/label_1/A image0.jpeg
img_dir/label_1/B image1.jpeg
SALIDA:
Una tabla sumarizando la cantidad de imagen por cada clase, por cada captura.
"""
# ==============================================================================
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import tensorflow as tf
import os
import os.path, sys
sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir))
import glob
import config
from random import shuffle
# ==============================================================================
FLAGS = tf.app.flags.FLAGS
capturas = FLAGS.capturas_id.split(",")
# ==============================================================================
def obtenerSubCarpetas(carpeta):
subcarpetas = [d for d in os.listdir(carpeta) if os.path.isdir(os.path.join(carpeta, d))]
return subcarpetas
def main(unused_argv):
if FLAGS.modo_procesar:
procesar()
else:
analisar()
input = sys.stdin.readline()
def analisar():
print('Analisando imagenes de: %s' % FLAGS.img_dir)
carpetas = obtenerSubCarpetas(FLAGS.img_dir)
encabezado = "clase\t"
for captura in capturas:
encabezado = encabezado + captura + "\t\t"
encabezado = encabezado + "Total"
print(encabezado)
for subcarpeta in carpetas:
renglon = subcarpeta + "\t\t"
carpeta = FLAGS.img_dir + "/" + subcarpeta + "/"
total = 0
for captura in capturas:
capturaX = glob.glob(carpeta + subcarpeta + captura + "*.jpg")
cantCapX = len(capturaX)
total = total + cantCapX
renglon = renglon + str(cantCapX) + "\t\t"
renglon = renglon + str(total)
print(renglon)
print('Proceso finalizado')
def procesar():
print('Procesando imagenes de: %s' % FLAGS.img_dir)
carpetas = obtenerSubCarpetas(FLAGS.img_dir)
for subcarpeta in carpetas:
carpeta = FLAGS.img_dir + "/" + subcarpeta + "/"
for captura in capturas:
capturaX = glob.glob(carpeta + subcarpeta + captura + "*.jpg")
# Mesclamos los archivos aleatoriamente
shuffle(capturaX)
# Nos quedamos con los primeros img_por_captura elementos
capturaX = capturaX[0:FLAGS.img_por_captura]
# Borramos aquellas imagenes que no estén dentro de captura
for archivo in glob.glob(carpeta + subcarpeta + captura + "*.jpg"):
if not (archivo in capturaX):
os.remove(archivo)
print('Proceso finalizado')
analisar()
# Punto de entrada del script
# tf.app.run() busca y ejecuta la función main del script
if __name__ == '__main__':
os.chdir(os.getcwd() + "/..")
print (os.getcwd())
tf.app.run()