当前位置:小鱼儿玄机二站 > 编程应用 > python图像数组操作与灰度转换,python图像灰度数

python图像数组操作与灰度转换,python图像灰度数

文章作者:编程应用 上传时间:2019-09-03

Python图像灰度调换及图像数组操作,python图像灰度数组

动用python以及numpy通过一贯操作图像数组完毕一多级基本的图像处理

numpy简介:

NumPy是一个卓绝盛名的 Python 科学总计工具包,在那之中蕴藏了汪洋实用的工具,举例数组对象(用来代表向量、矩阵、图像等)以及线性代数函数。

数组对象能够兑现数组中第一的操作,譬如矩阵乘积、转置、解方程系统、向量乘积和归一化。那为图像变形、对转移举行建立模型、图像分类、图像聚类等提供了根基。

在上一篇python基本图像操作中,当载入图像时,通过调用 array() 方法将图像调换来NumPy的数组对象。NumPy 中的数组对象是多维的,可以用来代表向量、矩阵和图像。通过对图像的数组进行直接操作,就足以完成比非常多图像管理。

numpy的有关文化英特网有过多资料,作为python科学总结的基本功,照旧拾壹分值得认真读书的。

采纳图像数组实行基本图像操作:

认知图像数组:

通过上面那多少个程序我们看一下图像与灰度图的图像数组,以及numpy数组的切条。

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
#读取图片并转为数组
im = array(Image.open("./source/test.jpg"))
#输出数组的各维度长度以及类型
print im.shape,im.dtype
#输出位于坐标100,100,颜色通道为r的像素值
print im[100,100,0]
#输出坐标100,100的rgb值
print im[100,100]及类型
print im.shape,im.dtype

运作结果:

(600, 500, 3) uint8
64
[ 64 117 195]

大家看来的是三个三个维度数组,分别代表横坐标,纵坐标和颜料通道。

笔者们得以由此数组把红蓝通道交换

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
#读取图片并转为数组
im = array(Image.open("./source/test.jpg"))
#红色通道
r = im[:,:,0]
#交换红蓝通道并显示
im[:,:,0] = im[:,:,2]
im[:,:,2] = r
imshow(im)
show()

此间运用了numpy数组的切丝方式,关于numpy的材质英特网有许多,就只是多呈报了。

运维结果:

 图片 1

在转为数组的进程中大家能够设定数据类型,同不常候灰度图的图像数组也有意义的:

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
#读取图片,灰度化,并转为数组
im = array(Image.open("./source/test.jpg").convert('L'),'f')
#输出数组的各维度长度以及类型
print im.shape,im.dtype
#输出坐标100,100的值
print im[100,100]

运作结果:

(600, 500) float32
110.0

外加的参数‘f'将数组的数据类型转为浮点数

由于灰度图未有颜色新闻,所以形榜眼组独有八个数值

*array()转换的相反操作能够应用PIL的fromarray()实现,如im = Image.fromarray(im)

图像数组的简约利用——灰度转换:

灰度图像:

灰度数字图疑似每一个像素唯有一个采集样品颜色的图像。那类图像经常展现为从最暗中蓝到最亮的本白的灰度。

能够通过上边二种办法,将图像转换为灰度:

1.浮点算法:Gray=哈弗*0.3+G*0.59+B*0.11

2.板寸办法:Gray=(牧马人*30+G*59+B*11)/100

3.运动方法:Gray =(LX570*76+G*151+B*28)>>8;

4.平分值法:Gray=(兰德酷路泽+G+B)/3;

5.仅取古金色:Gray=G;

通过上述任一种办法求得Gray后,将原来的ENVISIONGB(瑞鹰,G,B)中的奥迪Q7,G,B统一用Gray替换,形成新的颜色EnclaveGB(Gray,Gray,Gray),用它替换原本的CRUISERGB(Enclave,G,B)正是灰度图了。

事先曾经应用过很频仍了,使用python能够通过行使convert(‘L')来赢得灰度图

灰度转换:

将图像读入 NumPy 数组对象后,大家可以对它们推行大肆数学操作。叁个归纳的例证正是图像的灰度转换。即大肆函数 f ,它将 0…255 区间(也许 0…1 区间)映射到自身。

上边程序中有部分回顾的灰度转变:

#-*- coding: utf-8 -*-
from PIL import Image
from pylab import *
#读取图片,灰度化,并转为数组
im = array(Image.open("./source/test.jpg").convert('L'))
im2 = 255 - im # 对图像进行反相处理
im3 = (100.0/255) * im + 100 # 将图像像素值变换到 100...200 区间
im4 = 255.0 * (im/255.0)**2 # 对图像像素值求平方后得到的图像(二次函数变换,使较暗的像素值变得更小)
#2x2显示结果 使用第一个显示原灰度图
subplot(221)
title('f(x) = x')
gray()
imshow(im)
#2x2显示结果 使用第二个显示反相图
subplot(222)
title('f(x) = 255 - x')
gray()
imshow(im2)
#2x2显示结果 使用第三个显示100-200图
subplot(223)
title('f(x) = (100/255)*x + 100')
gray()
imshow(im3)
#2x2显示结果 使用第四个显示二次函数变换图
subplot(224)
title('f(x) =255 *(x/255)^2')
gray()
imshow(im4)
#输出图中的最大和最小像素值
print int(im.min()),int(im.max())
print int(im2.min()),int(im2.max())
print int(im3.min()),int(im3.max())
print int(im4.min()),int(im4.max())
show()

运维结果:

 图片 2

0 255
0 255
100 200
0 255

能够相比较刚毅的看出灰度调换的结果,,第二张图被反相展现,第三张图像的暗部变亮,亮部变暗,其值被限制在100到200里头,当中最后一张图像通过二回函数转换使较暗的像素值变得更加暗。

结语:

本篇博客介绍了python使用图像数组去开展图像操作的进度,包括多少个简单的实例,通过数组我们能够对图像进行任性数学操作,是图像变形、图像分类、图像聚类等的底子,希望自身的博客对大家具备协助~

python图像数组操作与灰度调换

你或然感兴趣的稿子:

  • 在Python中选用PIL模块管理图像的学科
  • python图像管理之反色达成方式
  • python图像管理之镜像实现方式
  • Python编制程序中运用Pillow来管理图像的基础教程

使用python以及numpy通过平素操作图像数组完结一多种基本的图像管理numpy简要介绍: Nu...

Python图像数组操作与灰度调换

行使python以及numpy通过直接操作图像数组完毕一多元基本的图像处理

numpy简介:

NumPy是贰个不胜资深的 Python 科学总结工具包,个中包涵了大量可行的工具,比方数组对象(用来代表向量、矩阵、图像等)以及线性代数函数。

数组对象能够兑现数组中根本的操作,比方矩阵乘积、转置、解方程系统、向量乘积和归一化。那为图像变形、对转移进行建立模型、图像分类、图像聚类等提供了根基。

在上一篇python基本图像操作中,当载入图像时,通过调用 array() 方法将图像转变到NumPy的数组对象。NumPy 中的数组对象是多维的,能够用来表示向量、矩阵和图像。通过对图像的数组实行直接操作,就足以实现很多图像管理。

numpy的相干文化网络有多数材质,作为python科学总计的根基,如故不行值得认真学习的。

选取图像数组举办着力图像操作:

认识图像数组:

因此下边那多少个程序大家看一下图像与灰度图的图像数组,以及numpy数组的切成块。

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

from PIL import Image

from pylab import *

#读取图片并转为数组
im = array(Image.open("./source/test.jpg"))

#输出数组的各维度长度以及类型
print im.shape,im.dtype

#输出位于坐标100,100,颜色通道为r的像素值
print im[100,100,0]

#输出坐标100,100的rgb值
print im[100,100]及类型
print im.shape,im.dtype

运作结果:

(600, 500, 3) uint8
64
[ 64 117 195]

作者们来看的是叁个三个维度数组,分别表示横坐标,纵坐标和颜色通道。

我们能够透过数组把红蓝通道沟通

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

from PIL import Image

from pylab import *

#读取图片并转为数组
im = array(Image.open("./source/test.jpg"))

#红色通道
r = im[:,:,0]

#交换红蓝通道并显示
im[:,:,0] = im[:,:,2]

im[:,:,2] = r

imshow(im)

show()

那边运用了numpy数组的切块情势,关于numpy的资料英特网有众多,就只是多陈说了。

运作结果:

图片 3

在转为数组的长河中我们得以设定数据类型,同期灰度图的图像数组也许有含义的:< 喎?" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;"> # -*- coding: utf-8 -*- from PIL import Image from pylab import * #读取图片,灰度化,并转为数组 im = array(Image.open("./source/test.jpg").convert('L'),'f') #输出数组的各维度长度以及类型 print im.shape,im.dtype #输出坐标100,100的值 print im[100,100]

运维结果:

(600, 500) float32
110.0

外加的参数‘f’将数组的数据类型转为浮点数

由于灰度图没有颜色音讯,所以形探花组唯有五个数值

*array()调换的反倒操作可以使用PIL的fromarray()实现,如im = Image.fromarray(im)

图像数组的简易利用——灰度调换:

灰度图像:

灰度数字图疑似各种像素独有叁个采集样品颜色的图像。那类图像平时显示为从最暗驼灰到最亮的反革命的灰度。

可以透过下边二种方式,将图像调换为灰度:

1.浮点算法:格雷=本田CR-V*0.3+G*0.59+B*0.11

2.卡尺头措施:Gray=(PRADO*30+G*59+B*11)/100

3.平移方法:Gray =(陆风X8*76+G*151+B*28)>>8;

4.等分值法:Gray=(福睿斯+G+B)/3;

5.仅取驼色:Gray=G;

透过上述任一种情势求得Gray后,将本来的福特ExplorerGB(CR-V,G,B)中的奥迪Q5,G,B统一用Gray替换,变成新的水彩OdysseyGB(Gray,格雷,Gray),用它替换原本的ENVISIONGB(Rubicon,G,B)正是灰度图了。

事先已经运用过很频仍了,使用python能够透过利用convert(‘L’)来赢得灰度图

灰度转变:

将图像读入 NumPy 数组对象后,大家得以对它们实施大肆数学操作。多个大约的例子就是图像的灰度转换。即大肆函数 f ,它将 0…255 区间(或许 0…1 区间)映射到本身。

上边程序中有一部分差十分少的灰度转换:

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

from PIL import Image

from pylab import *

#读取图片,灰度化,并转为数组
im = array(Image.open("./source/test.jpg").convert('L'))

im2 = 255 - im                  # 对图像进行反相处理

im3 = (100.0/255) * im + 100    # 将图像像素值变换到 100...200 区间

im4 = 255.0 * (im/255.0)**2     # 对图像像素值求平方后得到的图像(二次函数变换,使较暗的像素值变得更小)

#2x2显示结果 使用第一个显示原灰度图
subplot(221)

title('f(x) = x')

gray()

imshow(im)

#2x2显示结果 使用第二个显示反相图
subplot(222)

title('f(x) = 255 - x')

gray()

imshow(im2)

#2x2显示结果 使用第三个显示100-200图
subplot(223)

title('f(x) = (100/255)*x + 100')

gray()

imshow(im3)

#2x2显示结果 使用第四个显示二次函数变换图
subplot(224)

title('f(x) =255 *(x/255)^2')

gray()

imshow(im4)

#输出图中的最大和最小像素值
print int(im.min()),int(im.max())
print int(im2.min()),int(im2.max())
print int(im3.min()),int(im3.max())
print int(im4.min()),int(im4.max())

show()

运作结果:

图片 4

0 255
0 255
100 200
0 255

能够比较明显的观看灰度调换的结果,,第二张图被反相显示,第三张图像的暗部变亮,亮部变暗,其值被界定在100到200中间,个中最终一张图像通过贰次函数调换使较暗的像素值变得越来越暗。

结语:

本篇博客介绍了python使用图像数组去开展图像操作的历程,包罗多少个轻巧的实例,通过数组大家得以对图像实行随机数学操作,是图像变形、图像分类、图像聚类等的底蕴,希望作者的博客对我们有所帮忙~

Python图像数组操作与灰度转变使用python以及numpy通过直接操作图像数组达成一多重基本的图像处理numpy简单介绍:...

本文由小鱼儿玄机二站发布于编程应用,转载请注明出处:python图像数组操作与灰度转换,python图像灰度数

关键词: