Numpy处理图片方法

简介: Numpy处理图片方法

在进行图像领域的深度学习的时候经常需要对图片进行处理,包括图像的翻转,压缩,截取等,一般都是用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)

?

相关文章
|
7月前
|
数据采集 机器学习/深度学习 存储
【机器学习】数据清洗——基于Numpy库的方法删除重复点
【机器学习】数据清洗——基于Numpy库的方法删除重复点
228 1
|
Python
NumPy生成数组的方法
NumPy生成数组的方法
104 0
|
数据挖掘 索引 Python
【Python】数据分析:numpy的常用方法
【Python】数据分析:numpy的常用方法
80 0
|
6月前
|
数据采集 算法 BI
解析numpy中的iscomplex方法及实际应用
在 NumPy 中,iscomplex 函数用于检查数组中的每个元素是否为复数。这个函数在处理包含复数数据的数组时非常有用,尤其是在科学计算和工程领域,这些领域经常需要区分实数和复数。 在数学和工程领域,复数是一种基本的数值类型,它们扩展了实数系统,包含了实部和虚部。在 NumPy 中,复数由 numpy.complex128 或 numpy.complex64 类型表示。numpy.iscomplex 函数提供了一种简便的方式来检查数组中的元素是否为复数。这对于数据类型判断、数据清洗和后续的数值分析非常重要。
|
7月前
|
存储 索引 Python
NumPy 数组创建方法与索引访问详解
NumPy 的 `ndarray` 是其核心数据结构,可通过 `array()`、`zeros()`、`ones()` 和 `empty()` 函数创建。`array()` 可以将列表等转换为数组;`zeros()` 和 `ones()` 生成全零或全一数组;`empty()` 创建未定义值的数组。此外,还有 `arange()`、`linspace()`、`eye()` 和 `diag()` 等特殊函数。练习包括使用这些函数创建特定数组。
168 1
|
7月前
|
数据可视化 数据挖掘 C++
数据分析综合案例讲解,一文搞懂Numpy,pandas,matplotlib,seaborn技巧方法
数据分析综合案例讲解,一文搞懂Numpy,pandas,matplotlib,seaborn技巧方法
156 2
|
7月前
|
搜索推荐 数据挖掘 数据处理
NumPy数组统计与排序方法全览
【4月更文挑战第17天】本文介绍了NumPy在Python中的数组统计和排序功能。主要包括计算平均值、标准差和方差的`np.mean()`, `np.std()`, `np.var()`方法,以及求最大值、最小值、百分位数的功能。在排序方面,讲解了基本排序的`np.sort()`,获取排序索引的`np.argsort()`,逆序排序和随机排序的方法。这些工具对于数据分析和科学计算十分实用,能有效提升数据处理效率。
|
7月前
|
Python
Python21day学习---numpy生成数组的若干方法----day19
Python21day学习---numpy生成数组的若干方法----day19
97 0
|
数据挖掘 Python
【重磅收藏】numpy生成实数序列方法汇总
【重磅收藏】numpy生成实数序列方法汇总
128 0
|
存储 C++ 索引