您现在的位置是:首页 > 文章详情

Numpy处理图片方法

日期:2020-04-13点击:491

在进行图像领域的深度学习的时候经常需要对图片进行处理,包括图像的翻转,压缩,截取等,一般都是用Numpy来处理。处理起来也很方便。

In[3]

导入需要的包

import numpy as np

import matplotlib.pyplot as plt

from PIL import Image

读入图片

image = Image.open('./work/vehicle1.jpg')

image = np.array(image)

查看数据形状,其形状是[H, W, 3],

其中H代表高度, W是宽度,3代表RGB三个通道

image.shape

(437, 700, 3)

In[4]

原始图片

plt.imshow(image)

In[7]

垂直方向翻转

这里使用数组切片的方式来完成,

相当于将图片最后一行挪到第一行,

倒数第二行挪到第二行,...,

第一行挪到倒数第一行

对于行指标,使用::-1来表示切片,

负数步长表示以最后一个元素为起点,向左走寻找下一个点

对于列指标和RGB通道,仅使用:表示该维度不改变

image2 = image[::-1, :, :]

plt.imshow(image2)

In[8]

水平方向翻转

image3 = image[:, ::-1, :]

plt.imshow(image3)

In[5]

180度方向翻转

image31 = image[::-1, ::-1, :]

plt.imshow(image31)

In[9]

保存图片

im3 = Image.fromarray(image3)

im3.save('im3.jpg')

In[10]

高度方向裁剪

H, W = image.shape[0], image.shape[1]

注意此处用整除,H_start必须为整数

H1 = H // 2

H2 = H

image4 = image[H1:H2, :, :]

plt.imshow(image4)

In[11]

宽度方向裁剪

W1 = W//6

W2 = W//3 * 2

image5 = image[:, W1:W2, :]

plt.imshow(image5)

In[13]

两个方向同时裁剪

image5 = image[H1:H2, \

 W1:W2, :] 

plt.imshow(image5)

In[14]

调整亮度

image6 = image * 0.5

plt.imshow(image6.astype('uint8'))

In[15]

调整亮度

image7 = image * 2.0

由于图片的RGB像素值必须在0-255之间,

此处使用np.clip进行数值裁剪

image7 = np.clip(image7, \

 a_min=None, a_max=255.) 

plt.imshow(image7.astype('uint8'))

In[16]

高度方向每隔一行取像素点

image8 = image[::2, :, :]

plt.imshow(image8)

In[17]

宽度方向每隔一列取像素点

image9 = image[:, ::2, :]

plt.imshow(image9)

In[18]

间隔行列采样,图像尺寸会减半,清晰度变差

image10 = image[::2, ::2, :]

plt.imshow(image10)

image10.shape

(219, 350, 3)

原文链接:https://yq.aliyun.com/articles/755074
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章