python学习笔记

图像处理

图像的RGB色彩模式

R 红色 取值范围,0-255

G 绿色 取值范围 0-255

B 蓝色 取值范围 0-255

比如我们常见的黄色就是由红色和绿色叠加而来

红色的RGB表示(255,0,0) 绿色的RGB表示(0,255,0)

蓝色的RGB表示(0,0,255) 黄色的RGB表示(255,255,0)

像素阵列

数字图像可以看成一个整数阵列,阵列中的元素称为像素

Image模块

打开和新建

open(f,mode)

f:指打开文件的路径

mode:可选参数,表示打开文件的方式,通常使用默认值r

完全支持的格式
BMP, DIB, EPS, GIF, ICNS, ICO, IM, JPEG, JPEG 2000, MSP, PCX, PNG, PPM, SGI, SPIDER, TGA, TIFF, WEBP, XBM

只读格式
BLP, CUR, DCX, DDS, FLC, FPX, FTEX, GBR, GD, IMT, IPTC/NAA, MCIDAS, MIC, MPO, PCD, PIXAR, PSD, WAL, XPM

只写格式
PALM,PDF,XV缩略图

只标识格式
BUFR, FITS, GRIB, HDF5, MPEG, WMF
 

from PIL import Image

img = Image.open('校园.jpg')

# img.show()  显示图片

print('图片格式:', img.format)

print('图片的大小:', img.size)

print('图片的高度:', img.height, '图片的宽度:', img.width)

print('获取(100,100)处像素值:', img.getpixel((100,100)))

 遮罩混合

from PIL import Image
img1 = Image.open('12栋.jpg')
img2 = Image.open('校园.jpg')
img1 = img1.resize(img2.size)
r, g, b = img1.split()
Image.composite(img1, img2, b).show()

透明度混合

from PIL import Image
img1 = Image.open('12栋.jpg').convert(mode='RGB')
img2 = Image.new('RGB',img1.size,'red')

Image.blend(img1,img2,alpha=0.5),show()

复制和缩放

from PIL import Image
img1 = Image.open('12栋.jpg')
img1.show()
Image.eval(img1, lambda x: x*2).show()    # 像素扩大两倍

# 复制图片
img2 = img1.copy()
print(img2.size)
img1.show()
img2.thumbnail((200, 100))
img2.show()

图像的裁剪和粘贴

from PIL import Image
img = Image.open('校园.jpg')
imgb = img.copy()
imgc = img.copy()
img_crop = imgb.crop((10,10,120,120))
imgc.paste(img_crop,(30,30))
img.show()

图像旋转

from PIL import Image
img = Image.open('b.png')
# 图像的旋转
img.rotate(180).show()  # 图像旋转180

# 格式转换
img.transpose(Image.FLIP_TOP_BOTTOM).show()  #上下滤镜
img.transpose(Image.FLIP_LEFT_RIGHT).show()  #左右滤镜
img.transpose(Image.ROTATE_90).show()  #90滤镜
img.transpose(Image.ROTATE_180).show()  #180滤镜
img.transpose(Image.TRANSPOSE).show()  #颠倒滤镜

分离和合并

from PIL import Image
img1 = Image.open('a.png')
img2 = Image.open('b.png')
img2 = img2.resize(img1.size)

# 分隔
r1,g1,b1 = img1.split()
r2,g2,b2 = img2.split()

temp = [r1,g2,b1]
img = Imge.merge('RGB',temp)
img.show()


滤镜

from PIL import Image,ImgeFilter
img = Imge.open('b.jpg')

# 创建一个图像
img_output = Image.new('RGB',(2*w,h))
img_output.paste(img,(0,0))
img_filter = img.filter(ImgeFilter,(w,0))
img_output.show()

from PIL import Image,ImgeFilter
img = Imge.open('b.jpg')

# 创建一个图像
img_output = Image.new('RGB',(2*w,h))
img_output.paste(img,(0,0))


img_filter1 = img.filter(ImgeFilter.GaussianBlur)  # 高斯滤镜
img_filter2 = img.filter(ImgeFilter.EDGE_ENHANCE)  # 边缘增强滤镜
img_filter3 = img.filter(ImgeFilter.FEND_EDGES)  # 寻找边缘滤镜
filters.append(img_filter1)
filters.append(img_filter2)
filters.append(img_filter3)

for img_filter in filters:
    img.output.paste(img_filter,(w,0))
    img_output.show()

图像合成

from PIL import Image,ImgeFilter
img1 = Imge.open('a.jpg')
img2 = Imge.open('b.jpg')
# 对两张图片进行算术加法运算
# ImgeChops.add(img1,img2).show()

# 对两张图片进行算术减法
# ImageChops.subtrac(img1,img2).show()

# 使用darker()函数
# ImageChops.darker(img1,img2).show()

# 使用变亮函数lighter()函数
# ImageChops.lighter(img1,img2).show()

# 两张图片互相叠加multiply
# ImageChops.multiply(img1,img2).show()

# screen()
# ImagesChops.screen(img1,img2).show()

#反色invert()
# ImagesChops.invert(img1,img2).show()

# 比较函数difference()
# ImagesChops.difference(img1,img2).show()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值