def numTramas(self): if self.numColores == 2: indice = 16 elif self.numColores == 4: indice = 8 else: indice = 6 matriz = self.frame[2 * self.tamCelda:(2 + self.tamanoMatriz) * self.tamCelda, 2 * self.tamCelda:(2 + self.tamanoMatriz) * self.tamCelda] #cv2.imshow('',matriz) coloresR1 = self.coloresReferencia[0:self.numColores, 0:] coloresR2 = self.coloresReferencia[self.numColores:2 * self.numColores, 0:] coloresR3 = self.coloresReferencia[2 * self.numColores:, 0:] arregloColores = np.zeros((indice), np.uint8) aux = 0 img = np.zeros((512, 512, 3), np.uint8) x = 0 for f in range(self.tamanoMatriz): for c in range(self.tamanoMatriz): if x == indice: return arregloColores celda = matriz[f * self.tamCelda:(f + 1) * self.tamCelda, c * self.tamCelda:(c + 1) * self.tamCelda] if (f == 0 and c == 0) or (f == 0 and c == self.tamanoMatriz - 1) or (f == self.tamanoMatriz - 1 and c == self.tamanoMatriz - 1): d = 1 else: x += 1 if f < (self.tamanoMatriz / 2) + 2 and c < (self.tamanoMatriz / 2) + 1: colorC = Color(celda) colorCelda = colorC.colorDominante() arregloColores[aux] = self.color(colorCelda, coloresR1) elif f < (self.tamanoMatriz / 2) + 2 and c >= (self.tamanoMatriz / 2) + 1: colorC = Color(celda) colorCelda = colorC.colorDominante() arregloColores[aux] = self.color(colorCelda, coloresR1) else: colorC = Color(celda) colorCelda = colorC.colorDominante() arregloColores[aux] = self.color(colorCelda, coloresR1) aux = aux + 1 return arregloColores
def rotar(self): colores = np.ones((4, 3)) inicio = int(self.tamMatriz - (self.numColores / 2)) + 1 celda1 = self.image[0:self.tamCelda, 2 * self.tamCelda:3 * self.tamCelda] color1 = Color(celda1) colores[0, :] = color1.colorDominante() celda2 = self.image[2 * self.tamCelda:3 * self.tamCelda, (self.tamMatriz + 3) * self.tamCelda:(self.tamMatriz + 4) * self.tamCelda] color2 = Color(celda2) colores[1, :] = color2.colorDominante() celda3 = self.image[(self.tamMatriz + 3) * self.tamCelda:(self.tamMatriz + 4) * self.tamCelda, -3 * self.tamCelda:-2 * self.tamCelda] color3 = Color(celda3) colores[2, :] = color3.colorDominante() celda4 = self.image[-3 * self.tamCelda:-2 * self.tamCelda, 0:self.tamCelda] color4 = Color(celda4) colores[3, :] = color4.colorDominante() #Calcular distancias negro = [0, 0, 0] distanciaMenor = 10000 for i in range(4): color = colores[i, :] distancia = math.sqrt((color[0] - negro[0])**2 + (color[1] - negro[1])**2 + (color[2] - negro[2])**2) if distancia < distanciaMenor: distanciaMenor = distancia indice = i indicadores = np.ones((4), dtype=int) indicadores[indice] = 0 if np.array_equal(indicadores, np.array([0, 1, 1, 1], dtype=int)): imageRotada = self.rotateImage(self.image, 90) elif np.array_equal(indicadores, np.array([1, 0, 1, 1], dtype=int)): imageRotada = self.rotateImage(self.image, 180) elif np.array_equal(indicadores, np.array([1, 1, 0, 1], dtype=int)): imageRotada = self.rotateImage(self.image, -90) else: imageRotada = self.image return imageRotada
def LeerCeldas(self, image): celdaPatron = self.tamMatriz + 4 width = np.size(image, 0) tamCelda = math.ceil(width / celdaPatron) coloresCS = coloresR = np.zeros( (3, 3), int) #colores de las celdas de sincronización for m in range(3): if m == 0: x = 3 y = 3 elif m == 1: x = self.tamMatriz + 2 y = self.tamMatriz + 2 else: x = self.tamMatriz + 2 y = 3 celda = image[(y - 1) * tamCelda:y * tamCelda, (x - 1) * tamCelda:x * tamCelda] colorD = Color(celda) vColor = colorD.colorDominante() coloresCS[m, :] = colorD.colorDominante() #cv2.rectangle(image,((x-1)*tamCelda,(y-1)*tamCelda),(x*tamCelda,y*tamCelda),(0,255,0),-1) return coloresCS #cv2.imshow('color dominante',image) #cv2.waitKey(0) #image = cv2.imread('tam16.jpg') #CS=CeldaSincronizacion(16) #coloresReferencia = CS.LeerCeldas(image) #cv2.waitKey(0) #cv2.destroyAllWindows()