pillow 保存图像路径_Python教程:使用 Pillow 处理图片

点击上方关注订阅黑码教主获取更多精彩内容

安装Pillow

# v2版本 - 已弃pip install PIL# v3版本pip install Pillow

图形缩放操作

from PIL import Image# 打开一个jpg图像文件,注意是当前路径:im = Image.open('/Users/jomax/Desktop/test.jpg')# 获得图像尺寸:w, h = im.sizeprint( im.format, im.size, im.mode)print('Original image size: %sx%s' % (w, h))# 缩放到50%:im.thumbnail((w//2, h//2))print('Resize image to: %sx%s' % (w//2, h//2))# 把缩放后的图像用jpeg格式保存: 不填路径则保持到当前脚本路径im.save('thumbnail.jpg', 'jpeg')

模糊滤镜

from PIL import Image, ImageFilter# 打开一个jpg图像文件,注意是当前路径:im = Image.open('test.jpg')# 应用模糊滤镜:im2 = im.filter(ImageFilter.BLUR)im2.save('blur.jpg', 'jpeg')
0d18dedf5f606664f1fe110b4369620e.png

图像随机验证码

from PIL import Image, ImageDraw, ImageFont, ImageFilterimport random# 随机字母: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 * 4height = 60image = 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())# 输出文字: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')
9463a9d35daf1fc231dbd84b7315771b.png

如果你觉得本篇还不错,请点赞关注!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
垃圾分类是一项非常重要的环保工作,而图像识别技术能够在垃圾分类中发挥重要作用。本文将介绍如何使用Python及其相关库实现垃圾分类的图像识别分类。 首先,我们需要准备一些垃圾图片数据集,可以从网上下载或者自己拍摄收集。数据集需要包括有害垃圾、可回收垃圾、厨余垃圾和其他垃圾等分类。 接下来,我们需要使用Python图像处理Pillow和机器学习库scikit-learn来进行图像分类。具体步骤如下: 1.导入所需库 ```python from PIL import Image import numpy as np from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier ``` 2.读取图片数据集 ```python def load_data(): # 图片大小 size = (64, 64) # 数据集路径 data_path = 'data/' # 分类标签 labels = {'harmful': 0, 'recyclable': 1, 'kitchen': 2, 'other': 3} X, y = [], [] for label, tag in labels.items(): for i in range(1, 201): img_path = data_path + label + '/' + str(i) + '.jpg' img = Image.open(img_path).convert('RGB').resize(size) X.append(np.array(img)) y.append(tag) return np.array(X), np.array(y) ``` 3.数据集划分 将读取到的数据集划分为训练集和测试集,一般采用8:2的比例。 ```python def split_data(X, y): X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) return X_train, X_test, y_train, y_test ``` 4.特征提取 使用灰度化、去噪等技术提取图像的特征。 ```python def feature_extraction(X): # 灰度化 gray = np.mean(X, -1) # 去噪 blur = np.array([Image.fromarray(gray[i]).filter(ImageFilter.BLUR) for i in range(gray.shape[0])]) return blur.reshape(blur.shape[0], -1) ``` 5.模型训练和预测 使用KNN算法进行模型训练和预测。 ```python def knn(X_train, X_test, y_train): # KNN分类器 clf = KNeighborsClassifier(n_neighbors=5) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) return y_pred ``` 6.结果评估 使用accuracy_score函数计算模型的准确率。 ```python from sklearn.metrics import accuracy_score accuracy = accuracy_score(y_test, y_pred) print('Accuracy:', accuracy) ``` 完整代码如下: ```python from PIL import Image, ImageFilter import numpy as np from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score # 加载数据集 def load_data(): # 图片大小 size = (64, 64) # 数据集路径 data_path = 'data/' # 分类标签 labels = {'harmful': 0, 'recyclable': 1, 'kitchen': 2, 'other': 3} X, y = [], [] for label, tag in labels.items(): for i in range(1, 201): img_path = data_path + label + '/' + str(i) + '.jpg' img = Image.open(img_path).convert('RGB').resize(size) X.append(np.array(img)) y.append(tag) return np.array(X), np.array(y) # 数据集划分 def split_data(X, y): X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) return X_train, X_test, y_train, y_test # 特征提取 def feature_extraction(X): # 灰度化 gray = np.mean(X, -1) # 去噪 blur = np.array([Image.fromarray(gray[i]).filter(ImageFilter.BLUR) for i in range(gray.shape[0])]) return blur.reshape(blur.shape[0], -1) # KNN训练和预测 def knn(X_train, X_test, y_train): # 特征提取 X_train = feature_extraction(X_train) X_test = feature_extraction(X_test) # KNN分类器 clf = KNeighborsClassifier(n_neighbors=5) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) return y_pred if __name__ == '__main__': # 加载数据集 X, y = load_data() # 数据集划分 X_train, X_test, y_train, y_test = split_data(X, y) # 模型训练和预测 y_pred = knn(X_train, X_test, y_train) # 结果评估 accuracy = accuracy_score(y_test, y_pred) print('Accuracy:', accuracy) ``` 运行上述代码后,模型将对测试集进行预测并输出准确率。这样我们就实现了基于图像识别的垃圾分类。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值