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)
<matplotlib.image.AxesImage at 0x7fb195078b10>
In[7]
# 垂直方向翻转
# 这里使用数组切片的方式来完成,
# 相当于将图片最后一行挪到第一行,
# 倒数第二行挪到第二行,...,
# 第一行挪到倒数第一行
# 对于行指标,使用::-1来表示切片,
# 负数步长表示以最后一个元素为起点,向左走寻找下一个点
# 对于列指标和RGB通道,仅使用:表示该维度不改变
image2 = image[::-1, :, :]
plt.imshow(image2)
<matplotlib.image.AxesImage at 0x7fecfbfd15d0>
In[8]
# 水平方向翻转
image3 = image[:, ::-1, :]
plt.imshow(image3)
<matplotlib.image.AxesImage at 0x7fecfbf3aa10>
In[5]
# 180度方向翻转
image31 = image[::-1, ::-1, :]
plt.imshow(image31)
<matplotlib.image.AxesImage at 0x7fb194faaf10>
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)
<matplotlib.image.AxesImage at 0x7fecfbeac6d0>
In[11]
# 宽度方向裁剪
W1 = W//6
W2 = W//3 * 2
image5 = image[:, W1:W2, :]
plt.imshow(image5)
<matplotlib.image.AxesImage at 0x7fecfbe90390>
In[13]
# 两个方向同时裁剪
image5 = image[H1:H2, \W1:W2, :]
plt.imshow(image5)
<matplotlib.image.AxesImage at 0x7fecfbd5c810>
In[14]
# 调整亮度
image6 = image * 0.5
plt.imshow(image6.astype('uint8'))
<matplotlib.image.AxesImage at 0x7fecfbd47d10>
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'))
<matplotlib.image.AxesImage at 0x7fecfbcbb510>
In[16]
#高度方向每隔一行取像素点
image8 = image[::2, :, :]
plt.imshow(image8)
<matplotlib.image.AxesImage at 0x7fecfbc25850>
In[17]
#宽度方向每隔一列取像素点
image9 = image[:, ::2, :]
plt.imshow(image9)
<matplotlib.image.AxesImage at 0x7fecfbc08710>
In[18]
#间隔行列采样,图像尺寸会减半,清晰度变差
image10 = image[::2, ::2, :]
plt.imshow(image10)
image10.shape
(219, 350, 3)
Numpy处理图片方法相关推荐
- 十四、去年写的Numpy使用方法梳理,2020年5月13日整理
@Author : By Runsen @Written Date:2019/06/09 @modified Date:2020/5/13 这篇2019/06/09写的,因为要写成专栏挣钱,在今日20 ...
- pythoninterp error_Python numpy.interp方法代码示例
本文整理汇总了Python中numpy.interp方法的典型用法代码示例.如果您正苦于以下问题:Python numpy.interp方法的具体用法?Python numpy.interp怎么用?P ...
- numpy中方法参数axis取值理解
numpy中方法参数axis取值理解 首先不要使用什么横纵轴去理解,因为时间长了就忘记了,而且如果a是一个三维数组就没法解释了. axis等于0时,在shape中表示的是二维数组.那么np.amin( ...
- python中np zeros_Python numpy.zeros方法代码示例
本文整理汇总了Python中numpy.zeros方法的典型用法代码示例.如果您正苦于以下问题:Python numpy.zeros方法的具体用法?Python numpy.zeros怎么用?Pyth ...
- fmod函数python_python fmod函数_Python numpy.fmod方法代码示例
本文整理汇总了Python中numpy.fmod方法的典型用法代码示例.如果您正苦于以下问题:Python numpy.fmod方法的具体用法?Python numpy.fmod怎么用?Python ...
- 有关pycharm安装numpy简便方法
有关pycharm安装numpy简便方法 写调用numpy代码:import numpy as np 然后你会得到一个报错,说你没有numpy包,然后点击下载,不用管能不能下载成功,基本上都是下载失败 ...
- python fmod函数_Python numpy.fmod方法代码示例
本文整理汇总了Python中numpy.fmod方法的典型用法代码示例.如果您正苦于以下问题:Python numpy.fmod方法的具体用法?Python numpy.fmod怎么用?Python ...
- Python数据分析之初识numpy常见方法使用案例
声明与简介 numpy是python数据科学计算的基础包,这个包有多维数据对象ndarray,以及诸多它的派生对象(如:掩码数组.矩阵),同时这些对象还提供了数学,逻辑,形状处理,排序,选择,离散傅立 ...
- 掌握这些 NumPy Pandas 方法,快速提升数据处理效率!
Pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的.pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.pandas提供了大量能使我们快速 ...
最新文章
- ROS系统中实现点云聚类(realsense数据源)
- 设计模式——命令模式(Command Pattern)
- 南岸焊接机器人厂_焊接技术的发展历史,世界焊接发展200年回顾,你了解焊接吗?...
- 自测之Lesson6:文件I/O
- Geoff Hinton:我反对谷歌军事项目,论文评审机制正在阻碍创新
- Windows驱动开发 - 设备对象初步学习
- Linux命令之tar等
- html5 canvas移动位置,HTML5 Canvas 移动
- DMA(2) S3C2410 DMA详解(其它的其实类似)
- OpenShift 4 之获取版本升级路径图
- Mac node js环境的安装与测试
- 【原创】搭建spark环境二
- linux 内核网络,数据接收流程图
- Ubuntu安装tftp服务器
- google 浏览器离线安装包下载
- 6.1 PyTorch简单二分类模型
- 浅谈CTP期货行情交易API
- win10 文件夹设置区分大小写
- “简单证明GUID(全局唯一标识符)并不唯一”
- 2019年中国研究生数学建模竞赛D题 汽车行驶工况构建