【python】在图片加上数字

本文介绍了如何在Python中利用PIL库的ImageDraw模块为图片添加数字。作者通过学习廖雪峰的Python课程和GitHub上的练习册,掌握了在图片上加载文字的方法,特别提到了使用`text`属性来实现这一功能。对于添加中文,作者提到了两种处理方式,即在前面加`u`或使用`unicode('文字', 'utf-8')`。" 105114405,9399835,Swift闭包详解:从基础到逃逸闭包,"['Swift', '编程语言', '函数', '闭包']

目前在学习廖雪峰老师在慕课网上的python的入门以及进阶课程,同时也刷刷GitHub上的python练习册,链接如下:链接这是第0题,只是一个记录,希望自己可以一直记录下去。

题目如下:
**第 0000 题:**将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。

思路:
对于图像上加载数字,等同于加载文字,所以会用到python的PIL库,通过百度如何实现图片上加载文字了解到ImageDraw这个模块,然后我百度了这个模块的相关,发现一篇博客介绍挺详细的,链接发现介绍到最后就可以看到关于text属性是符合题目要求了,找到相关的就很容易了。

代码如下:
#coding=utf-8 
import PIL
from PIL import Image,ImageDraw,ImageFont  
font = ImageFont.truetype('simsun.ttc',24) #设置字体及其大小 不同字体可在c:\windows\font中找到
im01 = Image.open("F:\\Pyth
<think>嗯,用户想用Python和MNIST数据集显示多子图数字图片,使用matplotlib或者seaborn。首先,我得回忆一下MNIST数据集的加载方法。通常可以用Keras或者TensorFlow直接导入,或者用sklearn的fetch_openml。不过用户可能更熟悉Keras,因为MNIST是内置的数据集,对吧? 然后,显示多子图的话,matplotlib的plt.subplots比较常用。需要确定子图的行列数,比如5x5,总共有25个子图。每个子图显示一个数字图像,可能需要调整布局,防止重叠。 接下来,数据预处理。MNIST的图像是28x28的数组,需要reshape。另外,颜色映射用灰度比较合适,cmap='gray'。在绘制每个子图的时候,要关闭坐标轴,使用ax.axis('off')。 可能还需要随机选择样本,或者按顺序选取。用户可能希望每个子图有不同的数字示例,或者展示同一数字的不同样本?不过问题里没有特别说明,所以默认随机选择或者前几个样本即可。 代码结构方面,先加载数据,然后创建子图,循环绘制每个子图,设置标题等。记得使用plt.tight_layout()调整间距。 另外,用户提到了seaborn,虽然seaborn主要用于统计图表,但也可以配合matplotlib使用,比如设置风格。不过主要绘图还是用matplotlib的imshow。 可能的错误点:加载数据时的shape是否正确,颜色映射是否正确,子图索引是否正确,以及是否关闭了坐标轴。 然后,按照用户的要求生成相关问题,可能需要考虑数据加载的其他方法、调整子图样式、处理其他数据集等。 最后,确保引用正确,虽然用户提供的引用可能不太相关,但需要检查是否有必要引用,比如提到Keras的MNIST数据集加载方法时,可以加上引用标记。</think>### 使用Python和MNIST数据集显示多子图数字图片的实现步骤 #### 1. 加载MNIST数据集 通过`keras.datasets`直接加载标准MNIST数据集: ```python from tensorflow.keras.datasets import mnist (train_images, train_labels), (_, _) = mnist.load_data() ``` #### 2. 创建子图布局 使用`matplotlib.pyplot.subplots`创建$5 \times 5$的网格布局: ```python import matplotlib.pyplot as plt fig, axes = plt.subplots(5, 5, figsize=(10, 10)) axes = axes.ravel() # 将二维坐标轴数组展平为一维 ``` #### 3. 随机选择样本并可视化 通过numpy随机选择25个样本,遍历绘制每个子图: ```python import numpy as np for i in np.arange(25): idx = np.random.randint(0, train_images.shape[0]) axes[i].imshow(train_images[idx], cmap='gray') axes[i].set_title(f"Label: {train_labels[idx]}", fontsize=10) axes[i].axis('off') plt.tight_layout() # 自动调整子图间距 plt.show() ``` #### 4. 关键参数说明 - `cmap='gray'`:指定灰度色彩映射 - `axis('off')`:隐藏坐标轴 - `tight_layout()`:自动优化子图间距 - `set_title()`:显示数字标签 $$ \text{可视化效果评估指标} = \frac{\text{清晰可辨的样本数}}{\text{总样本数}} \times 100\% $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值