思路:1. 先把opencv读的图片转化为PIL的格式; 2. 用PIL在图片上写上汉字; 3. 把PIL格式的图片转化回opencv的格式。 直接上代码: # --*-- coding:utf-8 -*- import cv2 import numpy as np from PIL import Image,ImageDraw,ImageFont def draw_box_string(img, box, string): """ img: read by cv; box:[xmin, ymin, xmax, ymax]; 在Python中,添加汉字到图片上通常涉及到两个主要的图像处理库:OpenCV和PIL(Python Imaging Library)。OpenCV是一个强大的计算机视觉库,而PIL则主要用于图像处理,包括在图片上添加文本。以下是如何使用这两个库在图片上写汉字的详细步骤: 1. **读取图片**: 我们需要使用OpenCV的`cv2.imread()`函数读取图片。这将返回一个numpy数组,表示图片的像素数据。 ```python img_path = "test.jpg" img = cv2.imread(img_path) ``` 2. **转换图片格式**: OpenCV默认读取的图片是BGR格式,而PIL库期望的是RGB格式。因此,我们需要将图片从BGR转换为RGB。 ```python img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) ``` 3. **创建PIL图像**: 使用`Image.fromarray()`方法,将OpenCV的RGB图像转换为PIL图像。 ```python from PIL import Image img_pil = Image.fromarray(img) ``` 4. **创建绘制对象**: 在PIL图像上添加文本,我们需要创建一个`ImageDraw`对象,它提供了绘图的方法。 ```python from PIL import ImageDraw draw = ImageDraw.Draw(img_pil) ``` 5. **设置字体和大小**: 要写汉字,你需要一个支持中文的字体文件。这里我们使用`ImageFont.truetype()`来加载字体。确保你已经有一个包含中文字体的.ttf文件,例如“simhei.ttf”。 ```python from PIL import ImageFont font = ImageFont.truetype("simhei.ttf", 20, encoding="utf-8") ``` 6. **在图片上写字**: 使用`draw.text()`方法,在指定位置写入汉字。注意,这里的坐标是相对于左上角的,且文本会被写在指定点的上方。 ```python x, y, x1, y1 = box text_position = (x, y - 20) text_color = (0, 255, 0) draw.text(text_position, string, fill=text_color, font=font) ``` 7. **转换回OpenCV格式**: 写完汉字后,我们需要将PIL图像转回OpenCV的BGR格式。 ```python img = cv2.cvtColor(np.array(img_pil), cv2.COLOR_RGB2BGR) ``` 8. **保存结果**: 使用`cv2.imwrite()`保存修改后的图像。 ```python cv2.imwrite("output.jpg", img) ``` 总结一下,要在Python中使用OpenCV和PIL在图片上写汉字,你需要经过读取图片、格式转换、创建PIL图像、创建绘图对象、设置字体、写字、再转换回OpenCV格式以及保存结果这几个步骤。如果缺少中文字体,可以自行下载并确保正确引用。在实际应用中,可能还需要根据需求调整字体大小、颜色、位置等参数。
- 粉丝: 7
- 资源: 923
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- NSKeyValueObservationException如何解决.md
- 基于Java的环境保护与宣传网站论文.doc
- 前端开发中的JS快速排序算法原理及实现方法
- 常见排序算法概述及其性能比较
- 形状分类31-YOLO(v5至v11)、COCO、CreateML、Darknet、Paligemma、VOC数据集合集.rar
- 2018年最新 ECshop母婴用品商城新版系统(微商城+微分销+微信支付)
- BookShopTuto.zip
- 论文复现:结合 CNN 和 LSTM 的滚动轴承剩余使用寿命预测方法
- MySQL中的数据库管理语句-ALTER USER.pdf
- 冒泡排序算法解析及优化.md
- 2024年智算云市场发展与生态分析报告
- qwewq23132131231
- 《木兰诗》教学设计.docx
- 《台阶》教学设计.docx
- 《卖油翁》文言文教学方案.docx
- 《老王》教学设计方案.docx