7/21 python图像处理笔记

概述

引言

要使用python,必须先安装python,一般是2.7版本以上,不管是在windows系统,还是linux系统,安装都是非常简单的。
要使用python进行各种开发和科学计算,还需要安装对应的包。这和matlab非常相似,只是matlab里面叫工具箱(toolbox),而python里面叫库或包。基于python脚本语言开发的数字图片处理包,其实很多,比如PIL,Pillow, opencv, scikit-image等。
对比这些包,PIL和Pillow只提供最基础的数字图像处理,功能有限;opencv实际上是一个c++库,只是提供了python接口,更新速度非常慢。到现在python都发展到了3.5版本,而opencv只支持到python 2.7版本;scikit-image是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,正好与matlab一样。
综上所述,各种包安装起来很麻烦,不怕,我们选择一款集成安装环境就行了,在此推荐Anaconda, 它把以上需要的包都集成在了一起,因此我们实际上从头到尾只需要安装Anaconda软件就行了,其它什么都不用装。

前期工作

1.安装pycharm
2.安装Anconda
教程网址
https://blog.csdn.net/zhangkai9895/article/details/88084588

图像处理基本操作

Image.py

Image是PIL库里面的一个py文件,Image 类里面定义了许多对于图像的操作方法,在对图像进行操作的时候,已经默认将图片类型归入Image类里面,关于使用Image里面的方法,可以Image_name.Method()直接调用。
在这里插入图片描述
如果碰到实在不清楚的内部函数,可以看lib\site-packages\PIL\Image.py 里面的 class Image 内部如何定义。

Image_name.Method()

Image.open(“Image_name”)

处理图片的第一步,打开一个图片,我习惯性的将图片直接放到创建的文件夹中,可以直接以文件名的形式打开,当然也可以根据文件路径来打开,注意路径打开的时候,可能需要将"“转换成”/"才能正确引入。

电脑中复制的路径,比如:E:\视频照片\Python

引入的时候,需要:E:/视频照片/Python,

或者后面跟"r",即(“E:\视频照片\Python”,“r”)

Image.open()直接将img创建为Image类的对象,所以在后面可以直接用img.method()调用各种方法对图片对象进行操作
在这里插入图片描述
没有报错,引入成功了。

还有一点,就是如果用Image.open()不传递给对象的话,是可以直接打开的,在Notebook中,用Image.open()比Image_name.show()好用的多,可以直接在notebook内部查看,但是open()只能显示具有路径的,不能显示程序中的图片对象。

Image_name.show()

打开了图片,就要显示出来,Image_name.show()将图片在外部显示出来,刚才将图片传入到img里面,现在显示出来:
在这里插入图片描述

Image_name.rotate(0-360)

这是使图像旋转的方法,返回旋转后的图像,角度超过360°的,对360取余,比如旋转45°,img.rotage(45)
在这里插入图片描述
在这里插入图片描述

Image_name.convert(‘mode’)

图像处理中,最基本的就是色彩空间的转换。一般而言,我们的图像都是 RGB 色彩空间的,但在图像识别当中,我们可能需要转换图像到灰度图、二值图等不同的色彩空间。 PIL 在这方面也提供了极完备的支持,我们可以:
new_img = img.convert(‘L’)
把 img 转换为 256 级灰度图像, convert() 是图像实例对象的一个方法,接受一个 mode 参数,用以指定一种色彩模式,mode 的取值可以是如下几种:
· 1 (1-bit pixels, black and white, stored with one pixel per byte)
· L (8-bit pixels, black and white)
· P (8-bit pixels, mapped to any other mode using a colour palette)
· RGB (3x8-bit pixels, true colour)
· RGBA (4x8-bit pixels, true colour with transparency mask)
· CMYK (4x8-bit pixels, colour separation)
· YCbCr (3x8-bit pixels, colour video format)
· I (32-bit signed integer pixels)
· F (32-bit floating point pixels)

在这里插入图片描述
mode=L

图像增强

图像增强通常用以图像识别之前的预处理,适当的图像增强能够使得识别过程达到事半功倍的效果。 PIL 在这方面提供了一个名为 ImageEnhance 的模块,提供了几种常见的图像增强方案:
import ImageEnhance
enhancer = ImageEnhance.Sharpness(image)
for i in range(8):
factor = i / 4.0
enhancer.enhance(factor).show(“Sharpness %f” % factor)
上面的代码即是一个典型的使用 ImageEnhance 模块的例子。 Sharpness 是 ImageEnhance 模块的一个类,用以锐化图片。这一模块主要包含如下几个类:Color、Brightness、Contrast和Sharpness。它们都有一个共同的接口 .enhance(factor) ,接受一个浮点参数 factor,标示增强的比例。
**用Contrast 增强对比度, factor 取值 [0,4],步进0.5 **
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码

from PIL import Image
import matplotlib.pyplot as plt
from PIL.ImageEnhance import Sharpness

img = Image.open(r'D:\QQ图片20200323120702.jpg')
plt.figure("")
plt.axis("off")
plt.imshow(img)
plt.show()
print(img.size)            #图像的尺寸(width,height)
print(img.mode)            #图像的模式(RGB或其他)
print(img.format)          #图像的格式(png,jpg等)

grey = img.convert('1')    #把原图转换为灰度图像
grey.show()

img_2 = img.rotate(45, Image.NEAREST, 1) #把原图旋转45°
img_2.show()


'''
rgb2xyz = (
        0.412453, 0.357580, 0.180423, 0,
        0.212671, 0.715160, 0.072169, 0,
        0.019334, 0.119193, 0.950227, 0 )
out = img.convert("RGB", rgb2xyz)
'''

from PIL import ImageEnhance
enhancer = ImageEnhance.Contrast(img)
for i in range(8):
    factor = i / 4.0
    enhancer.enhance(factor).show("Contrast %f" % factor)

img.save(r'C:\Users\12620\Desktop\QQ图片20200323120702.jpg')    #图像的保存

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值