首页 > 解决方案 > 垂直镜像和图像循环

问题描述

我一直在寻找这个问题的一些可能的解决方案,我发现你可以使用 PIL 库,但我想问是否有可能通过使用 for 循环来解决。

这是我尝试过的:

! git clone https://github.com/carldjapardi/Trial-

import numpy as np
from matplotlib.pyplot import imshow
from PIL import Image

path = "/content/Trial-/chaplin.jpg"
image = Image.open(path).convert('L')
mat_image = np.array(image) #turn to np array 
m, n = mat_image.shape #img shape, m is the height, n is the width

mat_image_reversed = mat_image

for i in range(n):
  reversed_column = []
  for j in range(m-1, -1, -1):
    reversed_column.append(mat_image_reversed[i][j])
  mat_image_reversed[i] = reversed_column

imshow(mat_image_reversed, cmap = 'gray')

问题是我不断收到:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-33-84670325c66b> in <module>()

----> 7   mat_image_reversed[i] = reversed_column

ValueError: cannot copy sequence with size 394 to array axis with dimension 700

我尝试用 替换它mat_image_reversed[j] = reversed_column,但它给出了同样的错误

谁能告诉我出了什么问题?

标签: pythonpython-3.x

解决方案


…
for i in range(m):
  reversed_column = []
  for j in range(n-1, -1, -1):
…

但我想你需要的是:

mat_image_reversed = np.flip(mat_image,0)

或者

mat_image_reversed = np.flip(mat_image,1)

因此。


推荐阅读