2017-10-07 6 views
0

Ce code me donne l'erreur:erreur en essayant de montrer l'image avec OpenCV: remodelant tableaux en python

cannot reshape array of size 5428 into shape (100,55,3)

J'ai essayé entrer des numéros, mais je ne peux pas le faire fonctionner. Des idées?

IMAGE_HEIGHT = 100 
IMAGE_WIDTH = 55 
COLOR_PIXEL = 3 # RGB 

    if __name__ == '__main__': 
     # create the UDP socket 
     clientSocket = socket(AF_INET,SOCK_DGRAM) 
     try: 

      while True: 
       mensaje = raw_input('mandarle mensaje al servidor: ') 
       clientSocket.sendto(mensaje.encode(), (serverName, serverPort)) 

       try: 
        fileDescriptor = clientSocket.makefile(mode='rb') 
        result = fileDescriptor.readline() 
        fileDescriptor.close() 
        result = base64.b64decode(result) 
        frame = np.fromstring(result, dtype=np.uint8) 
        frame_matrix = np.array(frame) 
        frame_matrix = np.reshape(frame_matrix, (IMAGE_HEIGHT, IMAGE_WIDTH, COLOR_PIXEL)) 
        cv2.imshow('Camara', frame_matrix) 
+0

S'il vous plaît fournir plus d'explications sur ce que fait ce code et une sortie attendue – Worm

+0

le socket recive une trame d'encodage à partir d'un flux webcam, puis essaie de le montrer –

Répondre

0

Le problème est que le tableau que vous recevez ne sont pas de la bonne taille:

5428 = 2^2 * 23 * 59 

donc pas un facteur de votre supposé est un diviseur de 5428.

Probablement, vous sont soit altérant vos données avec l'opération base64decode. Vous devriez essayer d'utiliser le module standard de Python struct, et en particulier struct.unpack_from(), mais il n'est pas possible de vous en donner plus, étant donné que vous n'avez pas fourni de données d'exemple à regarder.