Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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()