Переверните изображение без импорта какой-либо библиотеки

#python

#python

Вопрос:

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

Я застрял на том, чтобы обновить правую часть изображения.

 height = len(image)
width = len(image[0])
            
for y in range(height//2):
    for x in range(width):
        pixo = image[x][y]
        pixn = image[x][-y]
        
       
        pixo.red = pixn.red
        pixo.green = pixn.green
        pixo.blue = pixn.blue
  

Ответ №1:

Используйте замену:

 pixo = image[x][y]
pixn = image[x][-y]

pixo.red, pixn.red = pixn.red, pixo.red
pixo.green, pixn.green = pixn.green, pixo.green
pixo.blue pixn.blue = pixn.blue, pixo.blue
  

Еще проще благодаря @Mercury:

 image[x][y], image[x][-y] = image[x][-y], image[x][y]
  

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

1. На самом деле, image[x][y], image[x][-y] = image[x][-y], image[x][y] должно быть достаточно.

Ответ №2:

Вместо этого используйте этот код:

 height = len(image)
width = len(image[0])
for i in range(height):
    for j in range(width//2):
       temp = float(image[i][j])
       image[i][j] = image[i][-j]
       image[i][-j] = temp
  

Я думаю, проблема заключалась в том, что вы использовали мелкую копию, и оба параметра изменились одновременно, вместо того, чтобы использовать float() для создания нового объекта, создается глубокая копия.