Проблема с изменением формы изображения в python

#python #numpy #opencv #image-processing #reshape

#питон #тупой #opencv #обработка изображений #изменить форму

Вопрос:

У меня есть следующий код, извлекающий кортеж (строку, массив) на стороне сервера, но когда я запускаю код, я получаю ошибку.

client.py

 image_name, image = footage_socket.recv_jpg()
image = cv2.imdecode( np.frombuffer( image, dtype='uint8' ), -1 )
image = img_to_array(image)
image = image.reshape( (1, image.shape[0], image.shape[1], image.shape[2]) )
preds = model.predict( preprocess_input( image ) )
print(preds.shape) #(1,1000)
dest_socket.send_image('test',preds)
 

server.py

 def main():  
   while True:
        data=socket.recv_image()
        image=tuple(x for x in data if x != 'test' )
        #npimg = np.fromstring( image, dtype=np.uint8 )
        image = image.reshape( (1, image.shape[0], image.shape[1], image.shape[2]) )
 

Я получаю ошибку ниже

 image = image.reshape( (1, image.shape[0], image.shape[1], image.shape[2]) )
AttributeError: 'tuple' object has no attribute 'reshape'
 

Я также использовал приведенный ниже код, чтобы изменить кортеж на массив, я все еще извлекаю ошибку, но другой тип ошибки

  image_to_array=np.array(image)
 image = image.reshape( (1, image_to_array.shape[0], image_to_array.shape[1], 
 image_to_array.shape[2]) )
 

Мой формат данных, извлекаемый из клиента

 (array([[1.47521848e-06, 2.06672325e-06, 1.44596870e-05, 1.64947978e-05,
2.81127559e-05, 3.47975970e-06, 1.05807794e-05, 4.30030159e-05,
5.65078590e-05, 2.27573415e-04, 7.15208662e-05, 2.86311624e-05)
   
 

Спасибо, помощь высоко ценится.

Ответ №1:

При воссоздании второго примера на основе данных, которыми вы делитесь, похоже, имеет форму (1,12). (Фрагмент данных кажется неполным, пожалуйста, взгляните на это). Поэтому:

 image_to_array.shape[0] = 1
image_to_array.shape[1] = 12
image_to_array.shape[2] does not exist and therefore gives you the error. 
 

Вы должны тщательно определить, какие данные вы извлекаете из своего клиента и в каком формате они находятся.
В этом случае я не вижу 3 массива, которые ожидаются с данными изображения. Либо вы отправили неправильные данные во фрагменте, либо вы извлекаете неправильные данные.

Комментарии:

1. Привет, спасибо вам большое, ваша помощь высоко ценится @TimVisser. Я обновил сообщение, и размер массива равен (1,1000), поэтому я не опубликовал полные данные.