#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()
для создания нового объекта, создается глубокая копия.