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
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)
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')
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))
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
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
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)
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)
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)
##!/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))
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")
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()
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())
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()
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")
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()