Ejemplo n.º 1
0
def main():
    args = sys.argv[1:]
    sujeto1 = args[0]
    sujeto2 = args[1]
    im = Imagen("image-" + sujeto1 + ".jpg")
    im1 = Imagen("image-" + sujeto2 + ".jpg")
    gray = cv2.cvtColor(im.imagen, cv2.COLOR_BGR2GRAY)
    gray1 = cv2.cvtColor(im1.imagen, cv2.COLOR_BGR2GRAY)
    orb = cv2.ORB()
    vis = im.imagen.copy()
    vis1 = im1.imagen.copy()

    #
    rects = f.detectCara(gray)
    x1c, y1c, x2c, y2c = rects[0]
    subrects, vis_roi = f.detectMouth(x1c, (y1c - y2c) * 2 / 3, x2c, y2c, gray,
                                      vis)
    x1, y1, x2, y2 = subrects[0]
    keypoints = orb.detect(im.imagen)
    zona = (x1c + x1, y1c + y1, x2c + x2, y2c + y2)
    #
    rects = f.detectCara(gray)
    x1, y1, x2, y2 = rects[0]
    subrects, vis_roi = f.detectMouth(x1, (y1 - y2) * 2 / 3, x2, y2, gray1,
                                      vis1)
    x1, y1, x2, y2 = subrects[0]
    keypoints1 = orb.detect(im1.imagen)
    zona2 = (x1c + x1, y1c + y1, x2c + x2, y2c + y2)
    cv2.drawKeypoints(im.imagen, keypoints, im.imagen)
    cv2.drawKeypoints(im1.imagen, keypoints1, im1.imagen)
    c = coincidencias(keypoints1, keypoints, zona, zona2)
    if c > 10:
        print True
    else:
        print False
Ejemplo n.º 2
0
 def __init__(self, pilas, ruta, columnas=1, filas=1):
     Imagen.__init__(self, pilas, ruta)
     self.cantidad_de_cuadros = columnas * filas
     self.columnas = columnas
     self.filas = filas
     self.cuadro_ancho = Imagen.ancho(self) / columnas
     self.cuadro_alto = Imagen.alto(self) / filas
     self.definir_cuadro(0)
Ejemplo n.º 3
0
 def __init__(self, pilas, ruta, columnas=1, filas=1):
     Imagen.__init__(self, pilas, ruta)
     self.cantidad_de_cuadros = columnas * filas
     self.columnas = columnas
     self.filas = filas
     self.cuadro_ancho = Imagen.ancho(self) / columnas
     self.cuadro_alto = Imagen.alto(self) / filas
     self.definir_cuadro(0)
Ejemplo n.º 4
0
	def loadFolder(self,folderName,totalImages,label):
		
		testImages = int(totalImages * self.testPercentage)
		trainImages = int(totalImages * self.trainPercentage)
		imgList = range(0, totalImages )

		for i in range(testImages) :
			randomIndex = random.randint(0, len(imgList)-1)
			imgNum = imgList[randomIndex]
			del imgList[randomIndex]
		

			image = Imagen(os.path.join(folderName, str(imgNum) + '.png'))
			vec = image.get_vector()
			if( vec is not None):

				objectLabel = list()
				for i in range(self.numClasses):
					if( i == label):
						objectLabel.append(1)
					else :
						objectLabel.append(0)



				self.trainLabels.append(objectLabel)
				self.trainVector.append(vec)
			else :
				print os.path.join(folderName, str(imgNum) + '.png')

		for i in range(trainImages) :
			randomIndex = random.randint(0, len(imgList)-1)
			imgNum = imgList[randomIndex]
			image = Imagen(os.path.join(folderName, str(imgNum) + '.png'))
			vec = image.get_vector()

			if( vec is not None):
				objectLabel = list()

				for i in range(self.numClasses):
					if( i == label):
						objectLabel.append(1)
					else :
						objectLabel.append(0)

				self.testingImages.append(image)
				self.testLabels.append(objectLabel)
				self.testVector.append(vec)
			else :
				print os.path.join(folderName, str(imgNum) + '.png')
Ejemplo n.º 5
0
def main():
  args = sys.argv[1:]
  sujeto1=args[0]
  sujeto2=args[1]
  umbral=args[2]
  im=Imagen("image-"+sujeto1+".jpg")
  im1=Imagen("image-"+sujeto2+".jpg")
  vis = im.imagen.copy()
  vis1 = im1.imagen.copy()
  gray = cv2.cvtColor(im.imagen, cv2.COLOR_BGR2GRAY)
  gray1 = cv2.cvtColor(im1.imagen, cv2.COLOR_BGR2GRAY)
  boca,nariz,ojo1,ojo2=distancias(gray,vis)
  sujeto1Area1,sujeto1Area2=areas(boca,nariz,ojo1,ojo2)
  boca,nariz,ojo1,ojo2=distancias(gray1,vis1)
  sujeto2Area1,sujeto2Area2=areas(boca,nariz,ojo1,ojo2)
  print comparaAreas(sujeto1Area1,sujeto1Area2,sujeto2Area1,sujeto2Area2,int(umbral))
Ejemplo n.º 6
0
def find_squares(imgOrig):
    img = cv2.inRange(cv2.GaussianBlur(imgOrig, (3, 3), 0.5), (0, 0, 150),
                      (100, 100, 200))
    squares = []
    #bin = cv2.Canny(img, 25, 350, apertureSize=3)
    kernel = np.ones((3, 3), np.uint8)
    kernel1 = np.ones((5, 5), np.uint8)
    #bin = cv2.closing(bin, kernel)
    bin = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
    bin = cv2.morphologyEx(bin, cv2.MORPH_DILATE, kernel1)
    bin = cv2.Canny(bin, 25, 350, apertureSize=3)
    bin = cv2.morphologyEx(bin, cv2.MORPH_DILATE, kernel1)
    Imagen(bin).show()
    contours, hierarchy = cv2.findContours(bin, cv2.RETR_LIST,
                                           cv2.CHAIN_APPROX_SIMPLE)
    for cnt in contours:
        #contornos cerrados
        cnt_len = cv2.arcLength(cnt, True)
        epsilon = 0.030 * cv2.arcLength(cnt, True)
        cnt = cv2.approxPolyDP(cnt, epsilon, True)
        if len(cnt) == 4 and cv2.contourArea(cnt) > 200 and cv2.contourArea(
                cnt) < 1700 and cv2.isContourConvex(
                    cnt) and proporcionesCorrectas(cv2.minAreaRect(cnt)):
            cnt = cnt.reshape(-1, 2)
            max_cos = np.max([
                angle_cos(cnt[i], cnt[(i + 1) % 4], cnt[(i + 2) % 4])
                for i in xrange(4)
            ])
            if max_cos < 0.7:
                squares.append(cnt)
    return squares
Ejemplo n.º 7
0
def find_badSquare(imgOrig):
    squares = []
    img = cv2.inRange(imgOrig, (52, 40, 190), (255, 140, 255))
    kernel = np.ones((3, 3), np.uint8)
    kernel1 = np.ones((2, 2), np.uint8)
    kernel2 = np.ones((5, 5), np.uint8)
    #bin = cv2.closing(bin, kernel)
    bin = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel2)

    #bin = cv2.morphologyEx(bin, cv2.MORPH_ERODE,kernel1)
    bin = cv2.morphologyEx(bin, cv2.MORPH_OPEN, kernel2)
    bin = cv2.morphologyEx(bin, cv2.MORPH_DILATE, kernel2)

    #bin = cv2.morphologyEx(bin, cv2.MORPH_CLOSE,kernel2)

    Imagen(bin).show()
    bin = cv2.Canny(bin, 25, 350, apertureSize=3)
    #bin = cv2.morphologyEx(bin, cv2.MORPH_DILATE, kernel1)

    contours, hierarchy = cv2.findContours(bin, cv2.RETR_LIST,
                                           cv2.CHAIN_APPROX_SIMPLE)
    for cnt in contours:
        #contornos cerrados
        cnt_len = cv2.arcLength(cnt, True)
        epsilon = 0.020 * cv2.arcLength(cnt, True)
        cnt = cv2.approxPolyDP(cnt, epsilon, True)
        if len(cnt) >= 6 and cv2.contourArea(cnt) > 300:
            cnt = cnt.reshape(-1, 2)
            max_cos = np.max([
                angle_cos(cnt[i], cnt[(i + 1) % 4], cnt[(i + 2) % 4])
                for i in xrange(4)
            ])
            #if max_cos < 0.7:
            squares.append(cnt)
    return squares
Ejemplo n.º 8
0
def main():
  imgSrc=os.listdir(c.test)
  imagenes=[]
  total=0
  detectadas=0
  for e in imgSrc:
    total+=1
    im,todo=f.detectFace(Imagen(e).imagen,e)
    if todo:
      detectadas+=1
    tmp=Imagen(im,name=e)
    imagenes.append(tmp)
  plt=Plot()
  tmp=[]
  print "total caras = "+str(total)+" todo detectado = "+str(detectadas)
  for e in imagenes:
    tmp.append((e.imagen,e.name))
  plt.show(tmp,5)
Ejemplo n.º 9
0
def main():
    imgSrc = os.listdir(c.test)
    imagenes = []
    total = 0
    detectadas = 0
    for e in imgSrc:
        total += 1
        im, todo = f.detectFace(Imagen(e).imagen, e)
        if todo:
            detectadas += 1
        tmp = Imagen(im, name=e)
        imagenes.append(tmp)
    plt = Plot()
    tmp = []
    print "total caras = " + str(total) + " todo detectado = " + str(
        detectadas)
    for e in imagenes:
        tmp.append((e.imagen, e.name))
    plt.show(tmp, 5)
Ejemplo n.º 10
0
def main():
    imgSrc = os.listdir(c.test)
    imagenes = []
    tmp = []
    for e in imgSrc:
        img = Imagen(e).imagen
        rects = f.detectCara(img)
        im, key = opc.dibujarPuntos(img)
        tmp.append((im, e))
    plt = Plot()
    plt.show(tmp, 5)
Ejemplo n.º 11
0
##!/usr/bin/python3
# -*- coding: utf-8 -*-

from archivo import Archivo
from pelicula import Pelicula
from imagen import Imagen

pelicula = Pelicula()
imagen = Imagen()
archivo = Archivo(pelicula)
archivo2 = Archivo(imagen)

descarados = []
encontrados2 = []

encontrados = archivo.buscar('Duro de matar')
descargados2 = archivo2.buscar('hola')

print(archivo.descargar(encontrados), archivo2.descargar(encontrados2))
Ejemplo n.º 12
0
info_defectos = []

#Leer imagenes
ruta = 'C:/Users/DavidAngel/Desktop/tfg/fotosPiezas';
for pieza in os.listdir(ruta):
    rutaPieza = ruta+'/'+pieza
    if os.path.isdir(rutaPieza):
        for tipo in os.listdir(rutaPieza):
            if tipo=="Ok" or tipo=="Defectos":
                rutaTipo = rutaPieza +'/'+tipo
                if os.path.isdir(rutaTipo):
                    for imagen in os.listdir(rutaTipo):
                        rutaImagen = rutaTipo + '/'+imagen
                        if imagen.endswith('.tif'):
                            if tipo=="Ok":
                                img = Imagen(rutaImagen, blancoNegro=True, pieza=pieza, tipo = tipo)
                                procesarImagen(img, info_ok)
                            else:
                                img = Imagen(rutaImagen, blancoNegro=True, pieza=pieza, tipo = tipo)
                                procesarImagen(img, info_defectos)
print("Se han encontrado "+str(len(info_ok))+" imágenes del tipo Ok")
print("Se han encontrado "+str(len(info_defectos))+" imágenes del tipo Defectos")

#Guardar los datos
print("Guardando datos Ok")
okFile = CsvFile(info_ok,"Ok")
print("Los datos Ok han sido guardados")

print("Guardando datos Defectos")
okFile = CsvFile(info_defectos,"Df")
print("Los datos Defectos han sido guardados")
Ejemplo n.º 13
0
    print("[Min,max]: ["+str(min)+", "+str(max)+"] -> "+str(diferencia))
    plt.text(max, 102, 'Max: '+str(max))
    plt.text(min, 2, 'Min: '+str(min))
    plt.text(medio, medio_y, 'Medio: '+str(medio))
    plt.plot([max, min, medio], [100,0, medio_y],marker='o', color='r', ls='')

"""
plt.subplot(2, 3, 1)
#3array = [0,1,3,6,7]
array = [40, 41, 28, 29, 34]
for x in array:
    data = ok_data[x]
    lista = [float(i) for i in data[3:103]]
    texto = data[0]
    plt.plot(lista, label=texto[texto.rindex('/') + 1:])

plt.legend()
plt.title("Umbral")

count = 2
for x in array:
    plt.subplot(2, 3, count)
    count = count + 1
    img = Imagen(ok_data[x][0], blancoNegro=True)
    img = img.ecualizar()
    #img = img.segmentacionOtsu()
    plt.imshow(img.img, cmap='gray')
    plt.title(ok_data[x][0])

plt.show()
Ejemplo n.º 14
0
def cara(imagen):
  gray=imagen.gray().imagen
  rects=f.detectCara(gray)
  a,b,c,d=rects[0]
  img=gray[b:d,a:c]
  return Imagen(img.copy())
Ejemplo n.º 15
0
                retval, bin = cv2.threshold(gray, thrs, 255, cv2.THRESH_BINARY)
                #Imagen(bin).show()
                
            contours, hierarchy = cv2.findContours(bin, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
            
            for cnt in contours:
                #contornos cerrados 
                cnt_len = cv2.arcLength(cnt, True)
                epsilon = 0.025*cv2.arcLength(cnt,True)
                cnt = cv2.approxPolyDP(cnt, epsilon, True)
              
                if len(cnt) == 4 and cv2.contourArea(cnt) > 50 and cv2.contourArea(cnt) <1700 and cv2.isContourConvex(cnt) :
                    cnt = cnt.reshape(-1, 2)
                    max_cos = np.max([angle_cos( cnt[i], cnt[(i+1) % 4], cnt[(i+2) % 4] ) for i in xrange(4)])
                    if (max_cos < 0.5 and colorCorrecto(imgOrig,cnt) and proporcionesCorrectas(cv2.minAreaRect(cnt))): 
                        squares.append(cnt)
    return squares

if __name__ == '__main__':
    from glob import glob
    for elem in os.listdir("../Pictogramas"):  
        img = cv2.imread('../Pictogramas/'+elem)
        squares = find_squares(img)
        Imagen(img).show()
        if len(squares) == 0 :
          squares=ls.find_squares(img)
        if elem == "picto5.jpg":
          squares=squares+ls.find_badSquare(img)
        cv2.drawContours( img, squares, -1, (0, 255, 0), 3 )
        Imagen(img).show()
Ejemplo n.º 16
0
from matplotlib import pyplot as plt
from imagen import Imagen
import cv2
import numpy as np

prueba = Imagen("rebabas.tif", blancoNegro=True)
prueba = prueba.ecualizar()
otsu1 = prueba.segmentacionOtsu()
#secciones = otsu1.secciones(ancho=2)

imgErosion = otsu1.erosion(iteraciones=10)
#seccionesO = imgErosion.secciones(ancho=2)
imgErosion2 = imgErosion.erosion(iteraciones=10)
#secciones1 = imgErosion2.secciones(ancho=2)
secciones = imgErosion2.secciones(ancho=100)
"""
plt.subplot("131"),plt.imshow(otsu1.img, cmap = 'gray')
plt.title(str(otsu1.porcentage_pixeles_blancos())+' % blancos'), plt.xticks([]), plt.yticks([])
plt.subplot("132"),plt.imshow(imgErosion.img, cmap = 'gray')
plt.title(str(imgErosion.porcentage_pixeles_blancos())+' % blancos'), plt.xticks([]), plt.yticks([])
plt.subplot("133"),plt.imshow(imgErosion2.img, cmap = 'gray')
plt.title(str(imgErosion2.porcentage_pixeles_blancos())+' % blancos'), plt.xticks([]), plt.yticks([])
plt.show()
"""
blancos = []
for seccion in secciones:
    blancos.append(seccion.porcentage_pixeles_blancos())
plt.plot(blancos)
plt.title("Umbral")
plt.xlabel("Ancho de la imagen")
plt.ylabel("% Píxeles blancos")
Ejemplo n.º 17
0
def main():

    # Parser de primer nivel
    parser = argparse.ArgumentParser(
        prog="esteno.py",
        description=
        "Herramienta de estenografía, sobre una imagen se oculta un archivo")

    # Añadimos lista de subparsers
    subparsers = parser.add_subparsers(dest="comando")

    # Parser para el comando enmascarar
    parserEnmascarar = subparsers.add_parser(
        "enmascarar", help="Enmascarar archivo secreto en una imagen vector")
    parserEnmascarar.add_argument("-v",
                                  "--vector",
                                  type=lambda x: validarArchivo(parser, x),
                                  required=True,
                                  help="Ruta de la imagen vector")
    parserEnmascarar.add_argument("-a",
                                  "--archivo",
                                  type=lambda x: validarArchivo(parser, x),
                                  help="Ruta del archivo secreto")
    parserEnmascarar.add_argument(
        "-s",
        "--semilla",
        type=int,
        default=10,
        help="Semilla de inicialiazción del generador")
    parserEnmascarar.add_argument(
        "--ruido",
        default=False,
        action='store_true',
        help="Añadir ruido a los píxeles no modificados")

    # Parser para el comando extraer
    parserExtraer = subparsers.add_parser(
        "extraer", help="Extraer archivo secreto de una imagen vector")
    parserExtraer.add_argument("-v",
                               "--vector",
                               type=lambda x: validarArchivo(parser, x),
                               required=True,
                               help="Ruta de la imagen vector")
    parserExtraer.add_argument("-s",
                               "--semilla",
                               type=int,
                               default=10,
                               help="Semilla de inicialiazción del generador")

    # Obtener parámetros
    args = parser.parse_args()

    # Crear imagen estenográfica
    imagen = Imagen(args.vector, args.semilla)

    if args.comando == "enmascarar":
        imagen.establecerRuido(args.ruido)
        imagen.enmascarar(args.archivo)

    elif args.comando == "extraer":
        imagen.extraer()