Python Learing(二):Basic Image Processing 1
<写在前面>
Basic image processing 1:
0.(以简单的曲线图为例)对于生成的图自定义外观,使用子图,多个数据集,标题,标签,交互式标注,图例;
1.生成散点图,直方图;
2.简单的图像处理:转换格式,调整尺寸,旋转,复制粘贴图像区域,在图像上绘制点线;
以上内容主要用了以下几种模块:
0.PIL (Python Image Library)
1.NumPy
2.Matplotlib
3.SciPy
无法安装的话,参考这篇文章
其实写这篇文章的时候,我一直在纠结是分模块整理好一些呢,还是将各种模块的功能集于同一个对象进行描述。一开始是尝试着分模块整理的,整理了一段时间发现这样做并不有效,而且提取的实际意义并不大。于是改成同一个对象,如何用python的模板画,这样的方式进行编写。希望之后自己能做一些亦可赛艇的东西丫~
<以下是正文>
生成简单的曲线图,并进行基础处理
生成简单的曲线图
import matplotlib.pyplot as plt #用matplotlib中的plt.plot画线
import numpy as np #用numpy
x = np.linspace(0,2*np.pi, 50) #np.linspace定义参数:将在[0,2π]区间生成包含50个元素的数组
y = np.sin(x) #使用np.sin(),生成一个正弦函数
plt.plot(x, y) #使用plt.plot( , )画线
plt.show()
生成了默认定义的sinx曲线
自定义外观
参考官网:自定义外观的相关文章
例如:
将上面的plt.plot语句改为
plt.plot(x, y, 'r-o') # r:红色;-o:实心点
使用多个数据集
在plt.plot定义多个点即可
如定义两个数据集
plt.plot(x, np.sin(x) , 'r', x, np.cos(x), 'g')
使用子图
使用 plt.subplot(x, y, z):x定义横向长度为相对的1/x,y定义纵向长度为相对的1/y,z定义所在的是哪个区域
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2* np.pi, 50)
y = np.sin(x)
plt.subplot(2 , 1, 1)
plt.plot(x, y)
z = np.cos(x)
plt.subplot(2, 1 , 2)
plt.plot(x, z)
plt.show()
显示标题,标签,图例
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 50)
plt.legend() #显示图例
plt.title('Sin and Cos Waves') #显示标题
plt.plot(x, np.sin(x), 'r-o', label='Sin(x)') #注明图例
plt.plot(y, np.cos(x), 'g-^', label='Cos(x)')
plt.xlabel('x') #显示x标签
plt.ylabel('y')
plt.show()
使用交互式标注
from PIL import Image
from pylab import *
im = array(Image.open('a.jpg'))
imshow(im)
print 'Please click 1 point'
x = ginput(1)
print 'you clicked: ',x
show()
生成直方图,散点图等基础图像
直方图
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(1000)
plt.hist(x, 50) #给hist()函数传入一个包含数据的数组,以及代表数据容器的个数
plt.show()
散点图
曲线波形图
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 50)
y = np.sin(x)
plt.scatter(x, y)
plt.show()
彩色映射随机散点图
import matplotlib.pyplot as plt
import numpy as np
x = np.random.rand(1000)
y = np.random.rand(1000)
size = np.random.rand(1000) * 50
colour = np.random.rand(1000)
plt.scatter(x, y, size, colour)
plt.colorbar()
plt.show()
简单图像处理
运用PIL库
from PIL import Image
#转换格式
im2.save('/python test/image_test/a.jpg', 'jpeg')
#调整尺寸
out = pil_im.resize((100, 100))
#旋转(默认逆时针)
out = pil_im.rotate(45)
#复制粘贴
a = (100, 100, 400, 400)
region = pil_im.crop(a)
pil_im.paste(region, a)
在图像上绘制点线
from PIL import Image
from pylab import *
im = array(Image.open('night2.jpg'))
imshow(im)
x = [100, 100, 400, 400, 20, 60] #选取任意个数的点
y = [200, 500, 200, 500, 30, 30]
plot(x, y , 'r-^')
plot(x[:5], y[:5]) #按顺序,依次连接前5个点
show()
Python Learing(二):Basic Image Processing 1的更多相关文章
- Python 基础 二
Python 基础 二 今天对昨天学习的Python基础知识进行总结,学而不思则惘,思而不学则殆! 一.先对昨天学习的三大循环的使用情况进行总结: 1.while循环的本质就是让计算机在满足某一条件的 ...
- 初学Python(二)——数组
初学Python(二)——数组 初学Python,主要整理一些学习到的知识点,这次是数组. # -*- coding:utf-8 -*- list = [2.0,3.0,4.0] #计算list长度 ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- 有关python下二维码识别用法及识别率对比分析
最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个模块:zbar .zbarlight.zxing. 1.三个模块的用法: #-*-coding=utf-8-*- import ...
- PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。
Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...
- 从Scratch到Python——Python生成二维码
# Python利用pyqrcode模块生成二维码 import pyqrcode import sys number = pyqrcode.create('从Scratch到Python--Pyth ...
- 用python生成二维码
Python生成二维码,可以使用qrcode模块, github地址 我是搬运工 首先安装, 因为打算生成好再展示出来,所以用到Pillow模块 pip install qrcode pip inst ...
- Python 实现二维码生成和识别
今天突然想给自己自己做个头像,然后还是二维码的形式,这样只要扫一扫就可以访问我的主页.然后就开始自己的苦逼之路... 其实实现二维码java,c#,C++等都可以实现:由于自己正在学python,所以 ...
- Python - 模块(二)
目录 Python - 模块(二) re re下面的方法 logging os Python - 模块(二) re re模块提供了正则表达式的相关操作 主要字符介绍: . 通配符,除了换行符之外的任意 ...
随机推荐
- css3布局相关(持续更新)
1三栏布局,两边定宽,中间自适应 2让文字位于div元素的正中央 3不管浏览器窗口如何变化,让一张图片始终显示在浏览器正中央.
- webkit 子资源加载过程
从主控文档和子资源表单的页面.描述框架记叙文页主文档,布局.子元素.包含图片.CSS.JS等.为了显示网页,先要把资源载入到内存. 载入就是指把须要的资源载入到内存这一过程. Webkit用到非常多缓 ...
- 【高德地图API】如何制作自己的旅游地图?
原文:[高德地图API]如何制作自己的旅游地图? “旅行的梦想并不遥远,只要一颗流浪四方的心.”——唐人立. 最早认识唐人立的时候,他还是大二的学生.他独自完成了“南京20年规划地图”.几年前,他完成 ...
- 【百度地图API】如何快速创建带有标注的地图?——快速创建地图工具+如何标注商家
原文:[百度地图API]如何快速创建带有标注的地图?--快速创建地图工具+如何标注商家 摘要: 如果你不会程序,如果你不想写代码. 如果你想拥有一张自己的地图,如果你想在该地图上标注出你商店的位置. ...
- 提高mysql千万级数据SQL的查询优化30条总结
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- Asp.net 4.0,首次请求目录下的文件时响应很慢
原文:Asp.net 4.0,首次请求目录下的文件时响应很慢 1. 问题起因2. 尝试过的处理思路3. 解决方法 1. 问题起因 一个从VS2003(.Net Framework 1.1)升级到.ne ...
- 从.net复制源代码中国农历阵列,必要做日历
从.net复制源代码中国农历阵列,必要做日历 const { 闰月的月份.春节的阳历日期(农历正月初一).农历的每一个月天数 } c_arrLunarInfo: array [1900 .. 2100 ...
- 腾讯QQ音乐网页版 音频初始化模块解压混淆js源码
define("js/view/playerBar.js",function(t,e,o){ var i = t("js/lib/zepto.js"), a = ...
- SQL点滴16—SQL分页语句总结
原文:SQL点滴16-SQL分页语句总结 今天对分页语句做一个简单的总结,他们大同小异的,只要理解其中一个其他的就很好理解了. 使用top选项 *from Orders orderid from Or ...
- css技巧--整理(1)
1.文字描边 -webkit-text-shadow:#be8ef8 2px 0 1px,#be8ef8 0 2px 1px,#be8ef8 -2px 0 1px,#be8ef8 0 -2px 1px ...