<写在前面>

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的更多相关文章

  1. Python 基础 二

    Python 基础 二 今天对昨天学习的Python基础知识进行总结,学而不思则惘,思而不学则殆! 一.先对昨天学习的三大循环的使用情况进行总结: 1.while循环的本质就是让计算机在满足某一条件的 ...

  2. 初学Python(二)——数组

    初学Python(二)——数组 初学Python,主要整理一些学习到的知识点,这次是数组. # -*- coding:utf-8 -*- list = [2.0,3.0,4.0] #计算list长度 ...

  3. Python学习二:词典基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...

  4. 有关python下二维码识别用法及识别率对比分析

    最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个模块:zbar .zbarlight.zxing. 1.三个模块的用法: #-*-coding=utf-8-*- import ...

  5. PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。

    Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...

  6. 从Scratch到Python——Python生成二维码

    # Python利用pyqrcode模块生成二维码 import pyqrcode import sys number = pyqrcode.create('从Scratch到Python--Pyth ...

  7. 用python生成二维码

    Python生成二维码,可以使用qrcode模块, github地址 我是搬运工 首先安装, 因为打算生成好再展示出来,所以用到Pillow模块 pip install qrcode pip inst ...

  8. Python 实现二维码生成和识别

    今天突然想给自己自己做个头像,然后还是二维码的形式,这样只要扫一扫就可以访问我的主页.然后就开始自己的苦逼之路... 其实实现二维码java,c#,C++等都可以实现:由于自己正在学python,所以 ...

  9. Python - 模块(二)

    目录 Python - 模块(二) re re下面的方法 logging os Python - 模块(二) re re模块提供了正则表达式的相关操作 主要字符介绍: . 通配符,除了换行符之外的任意 ...

随机推荐

  1. POJ1743---Musical Theme(+后缀数组二分法)

    Description A musical melody is represented as a sequence of N (1<=N<=20000)notes that are int ...

  2. ContentType是否大小写区分?

    ContentType控制web类型输出.无论是大小写是否区分? 例如: context.Response.ContentType = "application/json"; co ...

  3. hdu-4419-Colourful Rectangle-段树区,并寻求

    这个问题很有趣的项目,写麻烦.它预计将有写了很长的时间. 好在,我想开了一个比较简单的方法.. . 使用位计算,颜色RGB分别1,2,4,代表. 状态的长度了. #include<stdio.h ...

  4. 惰性函数——JS高级

    我们先来看一下js的异步提交. XHR我们在原生的时候常常用到,因为常用到,我们更多把封装到了工具库中 先看下他最常用的实现 // 旧方法 function createXHR() { var xhr ...

  5. Tair LDB基于Prefixkey找到如何提取一系列性能优化项目key的prefix_size

    眼下项目已快截止,编码任务也基本完毕.如今主要是性能測试. 项目是依照"Tair LDB基于Prefixkey的范围查找性能优化项目提议方案"的步骤一步步完毕的,首先先介绍第一个关 ...

  6. 异步编程(Async和Await)的使用

    .net4.5新特性之异步编程(Async和Await)的使用 一.简介 首先来看看.net的发展中的各个阶段的特性:NET 与C# 的每个版本发布都是有一个“主题”.即:C#1.0托管代码→C#2. ...

  7. Java NIO的多路复用及reactor

    (from:http://developer.51cto.com/art/201112/306489.htm) 以下描述,为了说明问题,就提提历史(类似的东西,网上一搜一大把,但是希望你能在这里止步, ...

  8. C#面向对象复习概要

    1.面向对象:我们将具有统一行为和属性的对象抽象划分为类,通过类去创建对象.这种编程思想叫做面向对象的编程思想. 2.属性:对象具有的属性 using System; using System.Col ...

  9. printf与++的puzzle

    int b = 0; int c = 0; int main(int argc, const char *argv[]) { printf("%d %d %d %d %d",b,b ...

  10. PHP_零基础学php_2变量、预定义变量、预定义常量、表达式、运算符、程序控制流程

    1.变量 PHP中使用$后跟变量名表示一个变量,变量名区分大小写. 变量的数据类型 整数类型 浮点类型 字符串类型 布尔类型 数组类型 对象 <html> <head> < ...