我正在尝试为类做一些python工作,无法让我的图像翻转。
import matplotlib.pyplot as plt
import numpy as np
import requests
from io import BytesIO
response = requests.get('https://www.boredpanda.com/blog/wp-content/uploads/2014/08/cat-looking-at-you-black-and-white-photography-1.jpg')
im = Image.open(BytesIO(response.content))
px = im.load()
pix_val_flat = []
for x in range(0, im.width):
for y in range(0, im.height):
pix_val_flat.append(px[x, y])
print(pix_val_flat)
arr = np.array(pix_val_flat)
reversed_array = arr[::-1]
#def displayImage(pix_val_flat):
# plt.imshow(pix_val_flat)
im.show(reversed_array)
有更好的方法吗?
如果专门处理图像,您应该考虑使用专用库,以使您的工作更轻松。
例如,你可以使用Pillow:
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
with Image.open("whatever_image.jpg") as im:
im = im.transpose(method=Image.FLIP_LEFT_RIGHT)
plt.imshow( np.asarray(im) )
在对数组/图像(ram中的值矩阵)进行所有修改后,您可以轻松地将其保存为经典图像格式文件:
im1.save("whatever_image_modified.jpg")
但是,根据您的偏好/需求,还有许多其他库可以很好地维护图像处理。
举几个例子:
来源
- Scikit-image。
- OpenCV。
- Mahotas。
- SimplelTK。
- SciPy。
- 枕头。
- Matplotlib。
您不一定需要任何特殊的函数来完成此操作,只需使用索引即可:
import numpy as np
import matplotlib.pyplot as plt
img = plt.imread("cat.jpg")
flipped_lr = img[:, ::-1, :]
flipped_ud = img[::-1, :, :]