python图像常规,python基本图像操作
分类:编程应用

python基本图像操作

python图像常规操作,python图像常规

选取python进行着力的图像操作与管理

前言:

与早先年代计算机视觉领域多数程序都是由 C/C++ 写就的情事不一致。随着计算机硬件速度越来越快,研商者在虚拟选取实现算葡萄牙共和国语言的时候会更多地思量编写代码的频率和易用性,实际不是像过去那么把算法的进行成效放在第2位。这一贯导致近些日子极其多的研商者选取Python 来兑现算法。

前几日在Computer视觉领域,越多的研商者使用 Python 开展切磋,所以有要求去学学一下丰盛易用的python在图像管理领域的使用,那篇博客将会介绍如何利用Python的多少个盛名的图像管理库完毕最中央的图像操作与拍卖。

行使PIL实行基本图像操作

PIL简介:

PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像管理作用,以及大气使得的大旨图像操作,举例图像缩放、裁剪、旋转、颜色转变等。

PIL读取与仓库储存图像:

利用 PIL 中的函数,我们能够从大比比较多图像格式的公文中读取数据,然后写入最常见的图像格式文件中。PIL 中最注重的模块为 Image 。

上面那些程序小编动用PIL读取一张jpg图片将其灰度化之后存为二个png文件:

# -*- coding: utf-8 -*-
from PIL import Image
import os
#打开图像得到一个PIL图像对象
img = Image.open("./source/test.jpg")
#将其转为一张灰度图
img = img.convert('L')
#存储该张图片
try:
  img.save("test.png")
except IOError:
  print "cannot convert"

Test.jpg

图片 1

Test.png

图片 2

PIL生成缩略图:

# -*- coding: utf-8 -*-
from PIL import Image
import os
#打开图像得到一个PIL图像对象
img = Image.open("./source/test.jpg")
#创建最长边为128的缩略图
img.thumbnail((128,128))
#存储该张图片
try:
  img.save("test.png")
except IOError:
  print "cannot convert"

Test.png

图片 3

PIL调解尺寸与旋转:

# -*- coding: utf-8 -*-
from PIL import Image
import os
#打开图像得到一个PIL图像对象
img = Image.open("./source/test.jpg")
#修改图片大小,参数为一元组
img = img.resize((100,200))
#使图片逆时针选择45度
img = img.rotate(45)
#存储该张图片
try:
  img.save("test.png")
except IOError:
  print "cannot convert"

Test.png

图片 4

PIL复制粘贴图像区域:

# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
from PIL import Image
import os
#打开图像得到一个PIL图像对象
img = Image.open("./source/test.jpg")
#从img中裁剪指定区域
region = img.crop((300,300,500,500))
#使裁剪部分逆时针选择145度
region = region.rotate(145)
#将该区域粘贴至指定区域
img.paste(region,(100,100,300,300));
#存储该张图片
try:
  img.save("test.png")
except IOError:
  print "cannot convert"

Test.png

图片 5

元组的利用中,坐标原点为左上角,区域划分如下图所示

图片 6

行使Matplotlib进行基本图像操作

Matplotlib简介:

大家管理数学生运动算、绘制图表,恐怕在图像上绘制点、直线和曲线时, Matplotlib是个很好的类库,具备比 PIL 更强硬的绘图成效。Matplotlib 能够绘制出较好的线形图、饼状图、散点图等,然而对于好多Computer视觉应用来讲,仅仅要求采用几个绘图命令。比如,大家想用点和线来表示一些东西,比方兴趣点、对应点以及检验出的实体。

接纳Matplotlib绘制图像、点、线

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
#打开图像得到一个PIL图像对象
img = Image.open("./source/test.jpg")
# 读取图像到数组中
im = array(img)
# 绘制图像
imshow(im)
# 一些点
x = [100,100,400,400]
y = [200,500,200,500]
# 使用红色星状标记绘制点
plot(x,y,'r*')
# 绘制连接前两个点的线
plot(x[:2],y[:2])
# 添加标题,显示绘制的图像
title('Plotting: "Test.jpg"')
show()

show() 命令首先展开图形客户分界面(GUI),然后新建二个图像窗口。该图片客户分界面会循环阻断脚本,然后暂停,直到最终一个图像窗口关闭。在每种脚本里,你不得不调用一遍show() 命令,而且一般是在本子的末梢调用。

也得以行使axis(‘off')命令使坐标轴不显得。

运维结果

图片 7

在绘图时,有过多采取能够决定图像的颜料和样式。

如:

plot(x,y)      #默认为蓝色实线
plot(x,y,'r*')   #红色星状标记
plot(x,y,'go-')   #带有圆圈标记的绿线
plot(x,y,'ks:')   #带有正方形标记的黑色虚线
标记 颜色
‘b' 蓝色
‘g' 绿色
‘r' 红色
‘c' 青色
‘m' 品红
‘y' 黄色
‘k' 黑色
‘w' 白色
标记 线型
‘-‘ 实线
‘–' 虚线
‘:' 点线
标记 形状
‘.'
‘o' 圆圈
's' 正方形
‘*' 星形
‘+' 加号
‘x' 叉号

行使Matplotlib绘制图像概况

制图图像的轮廓(可能别的二维函数的等概况线)在职业中非常实用。因为绘制概略需求对各类坐标 [x, y] 的像素值施加同二个阈值,所以率先必要将图像灰度化,之后选用contour获得轮廓图像

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
# 读取图像到数组中,并灰度化
im = array(Image.open('./source/test.jpg').convert('L'))
#显示时抛弃颜色信息
gray()
# 显示轮廓图像
contour(im, origin='image')
# 在原点的左上角显示
axis('equal')
#关闭坐标轴
axis('off')
show()

运作结果

图片 8

利用Matplotlib绘制直方图

图像的直方图用来表征该图像像素值的遍及情状。用自然数额的小区间(bin)来内定表征像素值的限量,各种小区间会获得落入该小区间表示范围的像素数量。(灰度)图像的直方图能够利用 hist() 函数绘制:

hist() 函数的第三个参数钦定小区间的数额。须求留意的是,因为 hist() 只接受一维数组作为输入,所以大家在绘制图像直方图在此之前,必得先对图像进行压平管理。flatten() 方法将轻便数组依照行优先法规调换来一维数组。

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
# 读取图像到数组中,并灰度化
im = array(Image.open('./source/test.jpg').convert('L'))
# 直方图图像
hist(im.flatten(),128)
# 显示
show()

运维结果

图片 9

应用Matplotlib进行交互式标明

PyLab 库中的 ginput() 函数能够兑现交互式标记,用来标识一些点依旧是有的磨炼多少。

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
# 读取图像到数组中
im = array(Image.open('./source/test.jpg'))
# 显示图像
imshow(im)
print 'Please click 3 points'
#获取点击并将点击坐标保存在[x,y]列表中
x = ginput(3)
#输出保存的数据
print 'you clicked:',x
show()

地点的台本首先绘制一幅图像,然后等待客户在绘图窗口的图像区域点击叁次。程 序将这么些点击的坐标 [x, y] 自动保存在 x 列表里。

运作结果

you clicked: [(295.22704081632651, 210.72448979591837), (405.43112244897952, 66.846938775510239), (439.1045918367347, 180.11224489795921)]

总结

本篇博客介绍了有的python基本的图像操作,除了上述的PIL和Matplotlib,还不常会动用numpy直接操作图像数组来到达操作图像的目标,使用scipy达成越来越多更眼花缭乱的测算,小编会把作者的读书进度记录下来,希望对我们享有接济~

以上正是本文关于python图像常规操作的全体内容,希望对大家享有扶助。感兴趣的对象能够承袭参照本站:

python使用邻接矩阵构造图代码示例

在Python web中得以实现验证码图片代码分享

python有意思的档次—色情图片识别代码分享

Python生成数字图片代码分享

有怎样难题能够随时留言,小编会及时还原我们的。感激朋友们对本站的帮忙!

使用python举行着力的图像操作与拍卖 前言: 与开始的一段时期Computer视觉领域多数主次都以由 C/C++ 写就的图景分裂...

Python基本图像操作

采用python实行基本的图像操作与拍卖

前言:

与早先时期Computer视觉领域多数顺序都是由 C/C++ 写就的动静差别。随着Computer硬件速度更加快,研商者在思量选取实现算葡萄牙语言的时候会越来越多地驰念编写代码的频率和易用性,并不是像从前那么把算法的推行效能放在第四位。那直接产生那二日更是多的商量者采用Python 来促成算法。

明日在计算机视觉领域,越来越多的讨论者使用 Python 开展研商,所以有须求去学学一下特别易用的python在图像管理领域的施用,那篇博客将会介绍怎么着选用Python的多少个响当当的图像管理库完毕最基本的图像操作与拍卖。

应用PIL进行着力图像操作

PIL简介:

PIL(Python Imaging Library Python,图像管理类库)提供了通用的图像管理作用,以及大批量使得的主导图像操作,举个例子图像缩放、裁剪、旋转、颜色调换等。

PIL读取与存储图像:

行使 PIL 中的函数,大家能够从大相当多图像格式的文本中读取数据,然后写入最常见的图像格式文件中。PIL 中最重视的模块为 Image 。

下边那么些程序笔者使用PIL读取一张jpg图片将其灰度化之后存为一个png文件:

# -*- coding: utf-8 -*-

from PIL import Image

import os

#打开图像得到一个PIL图像对象
img = Image.open("./source/test.jpg")

#将其转为一张灰度图
img = img.convert('L')

#存储该张图片
try:
    img.save("test.png")
except IOError:
    print "cannot convert"

Test.jpg

图片 10

Test.png

图片 11

PIL生成缩略图:

# -*- coding: utf-8 -*-

from PIL import Image

import os

#打开图像得到一个PIL图像对象
img = Image.open("./source/test.jpg")

#创建最长边为128的缩略图
img.thumbnail((128,128))

#存储该张图片
try:
    img.save("test.png")
except IOError:
    print "cannot convert"

Test.png

图片 12

PIL调解尺寸与旋转:

# -*- coding: utf-8 -*-

from PIL import Image

import os

#打开图像得到一个PIL图像对象
img = Image.open("./source/test.jpg")

#修改图片大小,参数为一元组
img = img.resize((100,200))

#使图片逆时针选择45度
img = img.rotate(45)

#存储该张图片
try:
    img.save("test.png")
except IOError:
    print "cannot convert"

Test.png

图片 13

PIL复制粘贴图像区域:

# -*- coding: utf-8 -*-

# -*- coding: utf-8 -*-

from PIL import Image

import os

#打开图像得到一个PIL图像对象
img = Image.open("./source/test.jpg")

#从img中裁剪指定区域
region = img.crop((300,300,500,500))

#使裁剪部分逆时针选择145度
region = region.rotate(145)

#将该区域粘贴至指定区域
img.paste(region,(100,100,300,300));

#存储该张图片
try:
    img.save("test.png")
except IOError:
    print "cannot convert"

Test.png

图片 14

元组的运用中,坐标原点为左上角,区域划分如下图所示

图片 15

使用Matplotlib进行着力图像操作

Matplotlib简介:

作者们管理数学生运动算、绘制图表,或许在图像上绘制点、直线和曲线时, Matplotlib是个很好的类库,具备比 PIL 更有力的绘图成效。Matplotlib 可以绘制出较好的线形图、饼状图、散点图等,可是对于绝大比较多管理器视觉应用来讲,仅仅供给使用多少个绘图命令。例如,大家想用点和线来代表一些东西,比如兴趣点、对应点以及检查实验出的物体。

应用Matplotlib绘制图像、点、线

# -*- coding: utf-8 -*-

from PIL import Image

from pylab import *

#打开图像得到一个PIL图像对象
img = Image.open("./source/test.jpg")

# 读取图像到数组中
im = array(img)

# 绘制图像
imshow(im)

# 一些点
x = [100,100,400,400]
y = [200,500,200,500]

# 使用红色星状标记绘制点
plot(x,y,'r*')

# 绘制连接前两个点的线
plot(x[:2],y[:2])

# 添加标题,显示绘制的图像
title('Plotting: "Test.jpg"')

show()

show() 命令首先打开图形顾客分界面(GUI),然后新建一个图像窗口。该图片客商界面会循环阻断脚本,然后暂停,直到最终叁个图像窗口关闭。在每一种脚本里,你不得不调用三次show() 命令,并且一般是在本子的尾声调用。

也能够动用axis(‘off’)命令使坐标轴不显得。

运营结果

图片 16

在绘图时,有为数十分多抉择能够决定图像的颜料和体裁。

如:

plot(x,y)           #默认为蓝色实线
plot(x,y,'r*')      #红色星状标记
plot(x,y,'go-')     #带有圆圈标记的绿线
plot(x,y,'ks:')     #带有正方形标记的黑色虚线

 

标记 颜色
‘b’ 蓝色
‘g’ 绿色
‘r’ 红色
‘c’ 青色
‘m’ 品红
‘y’ 黄色
‘k’ 黑色
‘w’ 白色

 

标记 线型
‘-‘ 实线
‘–’ 虚线
‘:’ 点线

 

标记 形状
‘.’
‘o’ 圆圈
’s’ 正方形
‘*’ 星形
‘+’ 加号
‘x’ 叉号

动用Matplotlib绘制图像轮廓

绘制图像的概貌(或然别的二维函数的等轮廓线)在职业中国和澳洲常平价。因为绘制概况必要对每一个坐标 [x, y] 的像素值施加同二个阈值,所以首先须要将图像灰度化,之后选用contour获得概略图像

# -*- coding: utf-8 -*-

from PIL import Image

from pylab import *

# 读取图像到数组中,并灰度化
im = array(Image.open('./source/test.jpg').convert('L'))

#显示时抛弃颜色信息
gray()

# 显示轮廓图像
contour(im, origin='image')

# 在原点的左上角显示
axis('equal')

#关闭坐标轴
axis('off')

show()

运营结果

图片 17

采取Matplotlib绘制直方图

图像的直方图用来表征该图像像素值的布满景况。用自然数量的小区间(bin)来钦点表征像素值的限量,各个小区间会获得落入该小区间表示范围的像素数量。(灰度)图像的直方图能够接纳hist() 函数绘制:

hist() 函数的第二个参数钦赐小区间的数据。必要小心的是,因为 hist() 只接受一维数组作为输入,所以大家在绘制图像直方图以前,必须先对图像进行压平管理。flatten() 方法将随便数组依照行优先准绳调换来一维数组。

# -*- coding: utf-8 -*-

from PIL import Image

from pylab import *

# 读取图像到数组中,并灰度化
im = array(Image.open('./source/test.jpg').convert('L'))

# 直方图图像
hist(im.flatten(),128)

# 显示
show()

运营结果

图片 18

利用Matplotlib进行交互式标记

PyLab 库中的 ginput() 函数能够兑现交互式申明,用来标志一些点大概是部分磨练多少。

# -*- coding: utf-8 -*-

from PIL import Image

from pylab import *

# 读取图像到数组中
im = array(Image.open('./source/test.jpg'))

# 显示图像
imshow(im)

print 'Please click 3 points'

#获取点击并将点击坐标保存在[x,y]列表中
x = ginput(3)

#输出保存的数据
print 'you clicked:',x

show()

地方的台本首先绘制一幅图像,然后等待顾客在绘图窗口的图像区域点击叁遍。程
序将这一个点击的坐标 [x, y] 自动保存在 x 列表里。

运作结果

you clicked: [(295.22704081632651, 210.72448979591837), (405.43112244897952, 66.846938775510239), (439.1045918367347, 180.11224489795921)]

结语:

本篇博客介绍了有的python基本的图像操作,除了上述的PIL和Matplotlib,还时有的时候会动用numpy直接操作图像数组来完毕操作图像的目标,使用scipy实现越多更复杂的臆想,笔者会把自家的读书进程记录下来,希望对大家享有支持~

Python基本图像操作 使用python进行基本的图像操作与处理 前言: 与前期Computer视觉领域多数程序都以由 C/C++ 写就的情状...

本文由正版必中一肖图发布于编程应用,转载请注明出处:python图像常规,python基本图像操作

上一篇:python迅雷批量,Python批量创立迅雷义务及创设四 下一篇:没有了
猜你喜欢
热门排行
精彩图文