-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
80 lines (63 loc) · 2.84 KB
/
main.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
# -*- coding: utf-8 -*-
"""
%--------------------------------------------------------------------------
%------- CÓDIGO -----------------------------------------------------------
%------- Proyecto 1 -------------------------------------------------------
%------- Por: Maria Camila Gomez [email protected] ----------------
%------- CC 1152454724 -----------------------------------------------
%------- Por: Santiago Romero [email protected] -----------------
%------- CC 1026154938 -----------------------------------------------
%------- Por: Milena Cardenas [email protected] -----------------
%------- CC 1036934864 -----------------------------------------------
%------- Curso Básico de Procesamiento de Imágenes y Visión Artificial-----
%------- Marzo de 2017-----------------------------------------------------
%--------------------------------------------------------------------------
"""
#--------------------------------------------------------------------------
#--1. Inicializo el sistema -----------------------------------------------
#--------------------------------------------------------------------------
import cv2
import numpy as np
import myFunctions as ff
print("Reconocedor de señales")
imagen = cv2.imread('imagen_2.jpg')
fil, col = imagen.shape[:2]
componente = ff.componentes(imagen)
min1 = componente;
min2=np.array(min1);
min3=(min2>170).choose(min2,255) #Umbraliza imagen segun un ...umbral
min3=(min2<170).choose(min2,0)
min3 = cv2.resize(min3,(col,fil));
#copiaImagen = imagen;
#copiaImagen[min3==0]=0;
th,copiaImagen = cv2.threshold(min3,150,255,cv2.THRESH_BINARY)
copiaImagen = ff.fill(th, copiaImagen);
th,copiaImagen = cv2.threshold(copiaImagen,150,255,cv2.THRESH_BINARY)
kernel = np.ones((5,5),np.uint8)
copiaImagen = cv2.morphologyEx(copiaImagen, cv2.MORPH_CLOSE, kernel)
im, l, n = cv2.findContours(copiaImagen,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(copiaImagen, l, 0, (0,255,0), 3)
imagenDos=copiaImagen;
copiaImagen=imagen;
copiaImagen[imagenDos==0]=0;
for h,cnt in enumerate(l):
mask = np.zeros(copiaImagen.shape,np.uint8)
cv2.drawContours(mask,[cnt],0,255,-1)
area = cv2.contourArea(cnt)
if area > 80000 :
if area < 90000:
# cv2.imshow('segmento', mask)
x,y,w,h = cv2.boundingRect(cnt)
box=copiaImagen[y:y+h,x:x+w]
senal = ff.reconocedor(box);
if(senal == 1):
print "Pare"
elif(senal == 2):
print "Derecha"
elif(senal == 3):
print "Izquierda"
else:
print "No hay señal"
#cv2.imshow('Imagen Grises', copiaImagen) # Se muestra la imagen
#cv2.waitKey() # Permanece la imagen en pantalla hasta presionar una tecla
#cv2.destroyAllWindows() # Cierra todas las ventanas abiertas