图像处理实战-Python编程进阶

pillow图像处理库

PIL(Python Imaging Library)是Python常用的图像处理库,但PIL仅支持到Python2.7,后一群志愿者在PIL的基础上创建了PIL的兼容版本Pillow

Pillow提供了广泛的文件格式支持,强大的图像处理能力,主要包括图像存储、图像显示、格式转换以及基本的图像处理操作等

Pillow扩展库主要功能

图像归档

对图像进行批处理、生成图像预览、图像格式转换等

图像处理

图像基本处理、像素处理、颜色处理

Pillow扩展库主要操作

在PIl中,任何一个图像文件都可以用Image对象表示

Image类的图像读取和创建方法

方法描述
Image.open(filename)根据参数加载图像文件
Image.new(mode,size,color)根据给定参数创建一个新的图像
Image.open(StringIO,StringIO(buffer))从字符串中获取图像
Image.frombytes(mode,size,data)根据像素点data创建图像
Image.verify对图像文件完整性进行检查,返回异常

Image类有4个处理图片的常用属性

属性描述
Image.format表示图像格式或来源,如果图像不是从文件读取,值是none
Image.mode图像的色彩模式,“L”灰度图像,“RGB”真彩色图像,“CMYK”出版图像
Image.size图像宽度和高度,单位是像素点(px),返回值是二元元祖(tuple)
Image.palette调色板属性,返回一个ImagePalette类型

Image类的图像转换和保存方法

方法描述
Image.save(filename,format)将图像保存为filename文件名,format是图片格式
Image.convert(mode)使用不同的参数,转换为图像为新的模式
Image.thumbnail(size)常见图像的缩略图,size是缩略图尺寸的二元元祖

生成缩略图,128*128是尺寸

from PIL import Image
im=Image.open("头像(1).jpg")
im.thumbnail((128,128))
im.save("img1","JPEG")

Image类能够对每个像素点或者一幅RGB图像的每个通道单独进行操作,split()方法能够将RGB图像个颜色通道提取出来,merge()方法能够将各独立通道再合成一幅新的图像。

方法描述
Image.point(func)根据函数func功能对每个元素进行运算,返回图像副本
Image.split()提取rgb图像的每个颜色通道,返回图像副本
Image.merge(mode,bands)合并通道,采用mode色彩,bands是新色的色彩通道
Image.blend(im1,im2,alpha)

将两幅图片im1和im2按照如下公式插值后生成洗呢图像:im1*(1.0-alpha)+im2*alpha

颜色变换 

from PIL import Image
im=Image.open("1.jpg")
r,g,b=im.split()
om=Image.merge("RGB",(b,g,r))#对RGB的颜色进行了调换
om.save('2.jpg')

PIL库的ImageFilter提供的过滤图像方法

方法表示描述
ImageFilter.BLUR图像的模糊效果
ImageFilter.CONTOUR图像的轮廓效果
ImageFilter.DETALL图像的细节效果
ImageFilter.EDGE_ENHANCE图像的边界加强效果
ImageFilter.EDGE_ENHANCE_MODE图像的阈值边界加强效果
ImageFilter.EMBOSS图像的浮雕效果
ImageFilter.FIND_EDGES图像的边界效果
ImageFilter.SMOOTH图像的平滑效果
ImageFilter.SMOOTH_MORE图像的阈值平滑效果
ImageFilter.SHARPEN图像的锐化效果

生成图像模糊效果:套用滤镜

from PIL import Image
from PIL import ImageFilter

im=Image.open("1.jpg")
om=im.filter(ImageFilter.BLUR)
#为图片使用模糊滤镜
om.save("3.jpg")

PIL库的ImageEnhance类提供了更高级的图像增强效果,提供调整色彩度、亮度、对比度、锐化等功能。

方法描述
ImageEnhance.enhance(factor)对选择属性的数值增强factor值
ImageEnhance.Color(im)调整图像的颜色平衡
ImageEnhance.Contrast(im)调整图像的对比度
ImageEnhance.Brightness(im)调整图像的亮度
ImageEnhance.Sharpness(im)调整图像的锐度

高级图像增强实例

from PIL import Image
from PIL import ImageEnhance

im=Image.open("1.jpg")

#调整图像对比库
om=ImageEnhance.Contrast(im)
#图像对比度增强3倍
om.enhance(3).save("4.jpg")

随机生成验证码

from PIL import Image,ImageDraw,ImageFont,ImageFilter
import random

# 随机字母:(65-90表示26个大写英文字母)
def rndChar():
    return chr(random.randint(65, 90))

# 随机颜色1:验证码背景颜色
def rndColor():
    return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))

# 随机颜色2:文本颜色
def rndColor2():
    return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))

 # 240 x 60:
width = 60 * 4
height = 60
image = Image.new('RGB', (width, height), (255, 255, 255))
# 创建Font对象:
font = ImageFont.truetype('arial.ttf', 36)
# 创建Draw对象:
draw = ImageDraw.Draw(image)
# 填充每个像素:
for x in range(width):
    for y in range(height):
        draw.point((x, y), fill=rndColor())#fill随机颜色
# 输出文字:
for t in range(4):
    draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())
# 模糊:
image = image.filter(ImageFilter.BLUR)
image.save('code.jpg', 'jpeg')

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常好的问题!我可以告诉你一些关于使用opencv-python进行图像处理的基本知识。 首先,确保你已经安装了opencv-python库。你可以使用以下命令在Python中安装它: ``` pip install opencv-python ``` 导入库后,你可以开始处理图像。下面是一个简单的例子,展示了如何读取、显示和保存图像: ```python import cv2 # 读取图像 image = cv2.imread('image.jpg') # 显示图像 cv2.imshow('Image', image) cv2.waitKey(0) # 保存图像 cv2.imwrite('image_output.jpg', image) ``` 在这个例子中,`imread`函数用于从文件中读取图像。`imshow`函数用于显示图像,`waitKey`函数可以等待按键输入。最后,`imwrite`函数用于将图像保存到文件中。 除了基本操作,opencv-python还提供了许多图像处理函数,如图像缩放、旋转、裁剪、滤波、边缘检测等。下面是一个简单的例子,展示了如何进行图像缩放和灰度转换: ```python import cv2 # 读取图像 image = cv2.imread('image.jpg') # 缩放图像 resized_image = cv2.resize(image, (800, 600)) # 灰度转换 gray_image = cv2.cvtColor(resized_image, cv2.COLOR_BGR2GRAY) # 显示图像 cv2.imshow('Resized Image', resized_image) cv2.imshow('Gray Image', gray_image) cv2.waitKey(0) ``` 在这个例子中,`resize`函数用于缩放图像,`cvtColor`函数用于将图像转换为灰度图像。 希望这些例子能帮助你入门opencv-python图像处理!如果你有更具体的问题,欢迎继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值