一、Pillow图像处理

1.图片加载与图片属性

# 1.图片加载与图片属性
from PIL import Image
im = Image.open('./jinzhengen.png')# format属性定义了图像的格式,如果图像不是从文件打开的,那么该属性值为None;
display(im.format)   # 'PNG'# size属性是一个tuple,表示图像的宽和高(单位为像素)
display(im.size)  # (411, 273)# mode属性为表示图像的模式,常用的模式为:L为灰度图,RGB为真彩色,CMYK为pre-press图像。
display(im.mode)  # 'RGB'# 2.另存为
im.save('./123.jpg')

3.改变图片色彩模式

# 3.改变图片色彩模式
# convert() 是图像实例对象的一个方法,接受一个 mode 参数,用以指定一种色彩模式
# 常用模式:
# L    # 黑白
# RGB  # 真彩色
# RGBA # 真彩加透明
im.convert('L')

4.图片的滤镜

# 4.图片的滤镜
from PIL import Image, ImageFilter
im = Image.open('./jinzhengen.png')# im.filter(ImageFilter.GaussianBlur)   # 高斯模糊 =>画圈取平均值
# im.filter(ImageFilter.BLUR)   # 普通模糊
# im.filter(ImageFilter.EDGE_ENHANCE)  # 边缘增强
# im.filter(ImageFilter.FIND_EDGES) # 找到边缘
# im.filter(ImageFilter.EMBOSS)   # 浮雕
im.filter(ImageFilter.CONTOUR)  # 轮廓
# im.filter(ImageFilter.SHARPEN)  # 锐化
# im.filter(ImageFilter.SMOOTH)  # 平滑
# im.filter(ImageFilter.DETAIL)  # 细节

5.截取屏幕指定区域

from PIL import ImageGrab
# im = ImageGrab.grab((0,0,800,200)) #截取屏幕指定区域的图像
im = ImageGrab.grab() #不带参数表示全屏幕截图
im

6.图片裁剪,图片旋转

from PIL import Image, ImageFilter
im = Image.open('./jinzhengen.png')   # (411, 273)
box = (120, 194, 220, 294) #定义裁剪区域 => 左上角与右下角两个坐标
region = im.crop(box) #裁剪
display(region)# transpose 旋转指定角度
# 参数值
# Image.ROTATE_90、Image.ROTATE_180、Image.ROTATE_270
# Image.FLIP_LEFT_RIGHT(#左右对换),  Image.FLIP_TOP_BOTTOM(上下对换)
im.transpose(Image.FLIP_TOP_BOTTOM)  # 图片旋转,旋转指定角度# rotate  旋转随意角度
#
im.rotate(45)  # 旋转随意角度

7.图像缩放

# 7.图像缩放from PIL import Image, ImageFilter
im = Image.open('./jinzhengen.png')   # (411, 273)
im.resize((200,100))  # #参数表示图像的新尺寸,分别表示宽度和高度

8.图像对比度增强

# 8.图像对比度增强
from PIL import Image, ImageEnhance
im = Image.open('./jinzhengen.png')   # (411, 273)#亮度增强
# enh_bri = ImageEnhance.Brightness(im)
# brightness = 1.5
# image_brightened = enh_bri.enhance(brightness)
# image_brightened# #色度增强
# enh_col = ImageEnhance.Color(im)
# color = 1.5  # 此值没有任何限制
# image_colored = enh_col.enhance(color)
# image_colored# #对比度增强
enh_con = ImageEnhance.Contrast(im)
contrast = 1.5
image_contrasted = enh_con.enhance(contrast)
image_contrasted# #锐度增强
# enh_sha = ImageEnhance.Sharpness(im)
# sharpness = 3.0
# image_sharped = enh_sha.enhance(sharpness)
# image_sharped

9.gif图像处理

# 9.gif图像处理
from PIL import Image
im = Image.open('./12.gif')   # (411, 273)
display(im.format, im.size, im.mode)  # 'GIF',(800, 600)  'P'=>帧im.seek(1)   # 定位到第几帧
im.tell()  # 返回当前帧所处位置
im

二、matplotlib简单图片处理及图形绘制

1.matplotlib简单图片处理

# 图片灰度处理
# jpg结尾的图片,RGB颜色值是从0到255的整数.
# png结尾的图片,RGB颜色值是从0到1的浮点数.jin = plt.imread('./jinzhengen.png')
plt.imshow(jin)# 三种方式# 最小值plt.imshow(jin.min(axis=2), cmap='gray')# 最大值plt.imshow(jin.max(axis=2), cmap='gray')# 平均值plt.imshow(jin.mean(axis=2), cmap='gray')# 加权平均  --对绿色敏感jin_weight  = np.dot(jin, [0.299,0.587,0.114]) / 3plt.imshow(jin_weight, cmap='gray')

2.matplotlib图形绘制

# 画框,画框大小, 画布,画布尺寸,# 线行图
#  关系: y = sin(x)
# 1.设置画板大小(宽高),颜色# plt.figure(figsize=(3* 5, 5), facecolor='pink')# 2.设置画布颜色# plt.subplot(facecolor='w')  # 画布背景色# 3.在一个图中绘制多个曲线及曲线样式# 使用多个plot函数(推荐),plt.plot(x, y)、plt.plot(x, y2)# 传入多对X,Y值,这个时候,x,y一定要成对  plt.plot(x, y, x, y2)# plt.plot(x, y, color='r', lw=3, alpha=1, ls='steps', #         dashes=[2, 3, 5, 1, 4,  2], marker='|', markersize=30, markerfacecolor='red'#         markeredgecolor='g', markeredgewidth=4) # 参数color => 曲线颜色# 参数linewidth/lw  =>  曲线的宽度# 参数alpha => 曲线的透明度,范围[0, 1]# 参数linestyle或ls => 曲线类型# 参数dashes => 设置破折号序列各段的宽度# 参数marker => 设置点用什么标记# 参数markersize => 标记点的大小# 参数markerfacecolor => 点内部的颜色# 参数markeredgewidth => 点边缘的宽度# 参数markeredgecolor => 点边缘的颜色# 4.设置画布网格线:(# 默认是实线,灰色的)# plt.grid(color='red', linestyle='--', linewidth=2)# 参数color  => 网格线的颜色 可缩写为c='rea/r/#ff0000'# 参数linestyle => 网格线的类型 简写lw, 线的风格: - 实线, -- 虚线, -. 点划线, : 点线# 参数linewidth  =lw , 线宽# 5.设置坐标轴标签(xlabel=>x轴标签、ylabel=>y轴标签)# plt.xlabel(s='X', color='r', fontsize=20, position=(1, 0), rotation=60)# 参数s, 标签名称# 参数color => 标签字体颜色# 参数fontsize => 标签字体大小# 参数position => 相对画板的位置 => 元组范围([0, 1], [0,1])# 参数rotation => 标签旋转角度, y轴的标签默认旋转90度# 参数的设置可以使用类的set方法:如 ylabel.set_color('r')# 6.设置图形的标题# plt.title('this is a circle', color='black', rotation=0, position=(0.5,-0.2))# 参数s, 标题名称# 参数color => 标题字体颜色# 参数fontsize => 标题字体大小# 参数position => 相对画板的位置 => 元组范围([0, 1], [0,1])# 参数rotation => 标题旋转角度# 7.设置图形的图例    #注意: 图例的名字不能以下划线开头# 方法一# plt.legend(['sin', 'cos'], loc=(-0.07, 1.2), ncol=2)  # 参数1: 图例名称# 参数loc: 图例相对画板的位置,图例也可以超过图的界限loc = (-0.1,0.9)# 参数ncol:ncol控制图例中有几列# 方法二# plt.plot(x, y, label='sin')# plt.plot(x, y2, label='cos')# plt.legend()# 8.把图形保存为图片# 生成figure对象# figure = plt.figure()# 。。。包裹展示的图片# figure.savefig('./legend.jpg', dpi=300, facecolor='g', transparent=True, )# 参数1:图片名称# 参数dpi:图像分辨率(每英寸点数),默认为100# 参数facecolor:图像的背景色(画板颜色),默认为“w”(白色)# 参数transparent:画布是否透明# 9.多参数连用#颜色、点型、线型   # 只能颜色,点型, 线型三个参数连用# 10.在一条语句中为多个曲线进行设置# 样式不一样# plt.plot(x, 2*x, 'r--o', x, x**2, 'g-d',x, 10*np.sin(x),'k*:')# 11.多条曲线样式相同# 使用关键词参数# plt.plot(x, 2*x,  x, x**2,x, 10*np.sin(x), c='g',ls='--', marker='d')# 12.属性设置可以用setp()方法  # line,  = plt.plot(x)# plt.setp(line, 'color', 'r') # set property# 13. X、Y轴坐标刻度# plt.xticks(np.arange(-15,15))# plt.yticks(np.arange(0,10),  np.arange(0,10))# 面向对象方法# set_xticks、set_yticks、set_xticklabels、set_yticklabels方法    #axes.set_xticks(np.arange(0,10))  # 使用面向对象的set方法的时候,set_xticks只是设置刻度   #axes.set_xticklabels(list('abcdefghij'))   # 使用set_xticklabels来设置刻度上的标签# 用π等表达式在图表上写上希腊字母# plt.xticks([0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi], ['0', '$\pi$/2', 'π', '3$\pi/2$', '2$\pi$'])# 14.坐标轴界限# axis不传参数会打印当前坐标轴的界限.# plt.axis()# 通过一个四个元素的元组指定了x,y轴的坐标轴界限. (xmin, xmax, ymin, ymax)# plt.axis((0, 10, 1, 20))# plt.axis(xmin=0, xmax=10)# 设置坐标轴类型 plt.axis('xxx') 'tight'、'off'、'equal'# 默认风格是tight  # plt.axis('tight')# off一般用来显示图片的时候用.# plt.axis('off')# 生成figure对象
figure = plt.figure()x = np.linspace(-15, 15, 1000)
y = np.sin(x)
y2 = np.cos(x)plt.figure(figsize=(3*5, 5), facecolor='pink')  # 设置画板大小(宽高),颜色
plt.subplot(facecolor='w')  # 画布背景色
plt.grid(color='#ff0000', linestyle='--', linewidth=2)  # 设置画布网格线plt.plot(x, y, color='r', lw=3, alpha=1)  # 在一个图中绘制多个曲线
plt.plot(x, y2)plt.xlabel('X', color='r', fontsize=20, position=(0.8, 0), rotation=0)
ylabel = plt.ylabel('Y')
ylabel.set_color('r')plt.title('this is a circle', color='black', rotation=0, position=(0.5,-0.2))# 图例
# 方法一
plt.legend(['sin', 'cos'], loc=(-0.07, 1.2), ncol=2)  # 方法二
# plt.plot(x, y, label='sin')
# plt.plot(x, y2, label='cos')
# plt.legend()plt.xticks(np.arange(-15,15))
plt.axis((-15,15, -1,1))# figure.savefig('./1.jpg')

3.matplotlib子图

x = np.linspace(-15, 15, 1000)
plt.figure(figsize=(2* 5, 5))axes1 = plt.subplot(1,2,1)  # 1行3列的第1个
axes1.plot(x, np.sin(x))
axes1.grid(lw=2)# 给子图的x,y轴加上标签
# plt.xlabel('X')
axes1.set_xlabel('X1')
axes1.set_ylabel('Y1')
axes1.set_title('Sin')axes2 = plt.subplot(1,2,2)
axes2.plot(x, np.cos(x))
axes2.grid(c='r')
# plt.xlabel('X')
axes2.set_xlabel('X2')

4. 2D图形绘制

4.1 直方图的绘制
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inlinedata = [1,1,2,3,4,4,5,6,7,7]
np.histogram(data)
# 直方图的color不能简写.
plt.hist(data, bins=20, density=True, orientation='vertical', color='r')'''
hist()的参数bins  可以是一个bin数量的整数值,也可以是表示bin的一个序列。默认值为10color
指定直方图的颜色。可以是单一颜色值或颜色的序列。如果指定了多个数据集合,颜色序列将会设置为相同的顺序。如果未指定,将会使用一个默认的线条颜色orientation
通过设置orientation为horizontal创建水平直方图。默认值为vertical
'''
4.2 条形图或柱状图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline# 必须传x,y
x = np.linspace(0,10,10)
plt.bar(x,x, color='g', )  # 垂直
plt.barh(x,x, color='g', ) # 水平
4.3 饼图
4.5 玫瑰图

ravenna = np.load('./Ravenna_wind.npy')
data, degree = np.histogram(ravenna, bins=8, range=[0, 360])# 使用弧度制
degree = np.arange(0, 2*np.pi, np.pi/4)# 创建极坐标条形图
plt.figure(figsize=(8,8))
plt.subplot(projection='polar', facecolor='g')# 画图
plt.bar(degree, data, color=np.random.rand(8,3), width=np.pi / 4)

04.数据分析之pillow与matplotlib相关推荐

  1. Python数据分析(三)matplotlib折线图应用实例——自定义图形风格

    往期推荐: Python数据分析(一)matplotlib基础绘图和调整x轴刻度 Python数据分析(二)matplotlib折线图应用实例--绘制10点到12点的气温 Python数据分析(四)m ...

  2. Python数据分析及可视化(Matplotlib, Plotly,random)实例:双色球根据往期数据产生随机号码

    之前有写过一篇"双色球数据爬取及写入数据库Sqlite.json和Excel表",是通过网站提供的json网页把数据爬取并存储下来,今天就通过这个数据进行数据分析和可视化的练习. ...

  3. Ubuntu 14.04上安装pip3/numpy/matplotlib/scipy操作步骤

    Ubuntu 14.04 64位上默认安装了两个版本的python,一个是python2.7.6,另外一个是python3.4.0,如下图所示: 安装完pip3的结果如下图所示: 升级完pip3的结果 ...

  4. Ubuntu14.04 LTS(64bit)彻底解决matplotlib中文乱码问题

    问题描述: matplotlib生成图型中汉字变为方框 转载:https://blog.csdn.net/dgatiger/article/details/50414549 亲测第二种解决方法,可用. ...

  5. 对爬虫数据分析的同学不要错过啦 数据分析数据可视化: Matplotlib

    Matplotlib 是 Python 中最基本的可视化工具,官网里 (( https://matplotlib.org/) 有无数好资料,但这不是重点,本文肯定和市面上的所有讲解都不一样. 和 Nu ...

  6. python数据分析工具3:matplotlib

    3.1 Matplotlib简介及图表窗口 Matplotlib → 一个python版的matlab绘图接口,以2D为主,支持python.numpy.pandas基本数据结构,运营高效且有较丰富的 ...

  7. 数据分析之numpy基础/matplotlib绘图/numpy常用函数/杂项功能

    文章目录 数据分析 numpy概述 numpy`历史` numpy的核心:多维数组 numpy基础 ndarray数组 内存中的ndarray对象 ndarray数组对象的特点 ndarray数组对象 ...

  8. python 可视化分析平台_python 数据分析数据可视化工具matplotlib

    说明: 数据可视化中的数据集下载地址:(数据来源:从零开始学python数据分析和挖掘) 链接:https://pan.baidu.com/s/1zrNpzSNVHd8v1rGFRzKipQ 提取码: ...

  9. python如何读取mat文件可视化_python 数据分析--数据可视化工具matplotlib

    说明: 数据可视化中的数据集下载地址:(数据来源:从零开始学python数据分析和挖掘) 链接:https://pan.baidu.com/s/1zrNpzSNVHd8v1rGFRzKipQ 提取码: ...

  10. Python数据分析(一)matplotlib

    数据分析是把大量的数据进行统计和整理,得出结论,为后续的决策提供数据支持. Matplotlib matplotlib是最流行的Python底层绘图库,主要工作为数据可视化图表,仿照MATLAB构建. ...

最新文章

  1. libuv 高性能 事件驱动 跨平台 i/o库 简介
  2. SpringBoot随笔
  3. nexus搭建和迁移
  4. webpack常用配置
  5. 卷起来了!DeepMind发布媲美普通程序员的AlphaCode,同日OpenAI神经数学证明器拿下奥数题...
  6. 车辆动力学及控制_第一届国际轮胎动力学仿真技术峰会在长春举行
  7. TCP/IP协议、DoD模型、OSI模型
  8. python3.8和3.7共存,Windows10上解决python3.7与python3.8共存的问题
  9. Atitit sdk封装的艺术 艾提拉著 1. 重要模块8个 1 1.1. Collections集合,core,net,io,Script,sql,text,fp 1 1.2. 全部模块25
  10. 四大经典大数据应用案例解析
  11. 用计算机分析卫星云图 进行实时天气,卫星云图,气象卫星云图,卫星云图高清实时滚动播放 - 围观天气...
  12. 【UE4】解决局域网联机游戏连接不上的问题
  13. SSH配置-使用Bitvise SSH Client工具在Windows下远程登陆Linux服务器
  14. 卡诺模型(KANO Model)
  15. linux 命令无法Tab补全,命令参数无法补全
  16. 下载编译chromium
  17. ACL(访问控制列表)
  18. 程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大经典原创系列集锦与总结
  19. 【Machine Learning】模型融合之Stacking
  20. 脚本恢复Win10照片查看器

热门文章

  1. 奥城大学计算机专业,2018年美国大学硕士双录取最全名单
  2. 干货分享:如何把APP软文推广做到好
  3. 热搜大事记【2018-11-05-2018-11-11】
  4. SAP中设置参数缺省值小技巧
  5. php 中文逗号 转英文,PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式...
  6. @PathVariable注解是什么?
  7. 用对分法求解方程x^3-x^2-x-1=0
  8. 如何注册一个免费的网站空间和域名
  9. 如何选择物联网服务商
  10. HTTP协议:无状态协议