码迷,mamicode.com
首页 > 编程语言 > 详细

数字图像处理之python篇二:图像通道\几何变换\裁剪

时间:2016-01-03 15:00:20      阅读:411      评论:0      收藏:0      [点我收藏+]

标签:

一、图像通道

1、彩色图像转灰度图

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open(d:/ex.jpg)
gray=img.convert(L)
plt.figure("beauty")
plt.imshow(gray,cmap=gray)
plt.axis(off)
plt.show()

技术分享

使用函数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)

2、通道分离与合并

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open(d:/ex.jpg)  #打开图像
gray=img.convert(L)   #转换成灰度
r,g,b=img.split()   #分离三通道
pic=Image.merge(RGB,(r,g,b)) #合并三通道
plt.figure("beauty")
plt.subplot(2,3,1), plt.title(origin)
plt.imshow(img),plt.axis(off)
plt.subplot(2,3,2), plt.title(gray)
plt.imshow(gray,cmap=gray),plt.axis(off)
plt.subplot(2,3,3), plt.title(merge)
plt.imshow(pic),plt.axis(off)
plt.subplot(2,3,4), plt.title(r)
plt.imshow(r,cmap=gray),plt.axis(off)
plt.subplot(2,3,5), plt.title(g)
plt.imshow(g,cmap=gray),plt.axis(off)
plt.subplot(2,3,6), plt.title(b)
plt.imshow(b,cmap=gray),plt.axis(off)
plt.show()

技术分享

二、裁剪图片

从原图片中裁剪感兴趣区域(roi),裁剪区域由4-tuple决定,该tuple中信息为(left, upper, right, lower)。 Pillow左边系统的原点(0,0)为图片的左上角。坐标中的数字单位为像素点。

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open(d:/ex.jpg)  #打开图像
plt.figure("beauty")
plt.subplot(1,2,1), plt.title(origin)
plt.imshow(img),plt.axis(off)

box=(80,100,260,300)
roi=img.crop(box)
plt.subplot(1,2,2), plt.title(roi)
plt.imshow(roi),plt.axis(off)
plt.show()

技术分享

用plot绘制显示出图片后,将鼠标移动到图片上,会在右下角出现当前点的坐标,以及像素值。

三、几何变换 

Image类有resize()、rotate()和transpose()方法进行几何变换。

 1、图像的缩放和旋转

dst = img.resize((128, 128))
dst = img.rotate(45) # 顺时针角度表示
2、转换图像
dst = im.transpose(Image.FLIP_LEFT_RIGHT) #左右互换
dst = im.transpose(Image.FLIP_TOP_BOTTOM) #上下互换
dst = im.transpose(Image.ROTATE_90)  #顺时针旋转
dst = im.transpose(Image.ROTATE_180)
dst = im.transpose(Image.ROTATE_270)
transpose()和rotate()没有性能差别。

数字图像处理之python篇二:图像通道\几何变换\裁剪

标签:

原文地址:http://www.cnblogs.com/denny402/p/5096330.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!