OpenCV图像处理:在图片上显示中英文文字
创作时间:
作者:
@小白创作中心
OpenCV图像处理:在图片上显示中英文文字
引用
CSDN
1.
https://m.blog.csdn.net/gxz888/article/details/140507939
OpenCV是一个强大的计算机视觉库,广泛应用于图像处理和计算机视觉任务。在本教程中,我们将学习如何在图像上添加文字,包括英文和中文。
使用OpenCV添加英文文字
OpenCV提供了多种内置字体样式,可以通过cv2.putText函数添加英文文字。以下是一些可用的字体样式:
cv2.FONT_HERSHEY_SIMPLEX- 正常大小的无衬线字体。cv2.FONT_HERSHEY_PLAIN- 小尺寸的无衬线字体。cv2.FONT_HERSHEY_DUPLEX- 正常大小的无衬线字体,比FONT_HERSHEY_SIMPLEX更厚。cv2.FONT_HERSHEY_COMPLEX- 正常大小的衬线字体。cv2.FONT_HERSHEY_TRIPLEX- 正常大小的衬线字体,比FONT_HERSHEY_COMPLEX更厚。cv2.FONT_HERSHEY_COMPLEX_SMALL- 较小的衬线字体。cv2.FONT_HERSHEY_SCRIPT_SIMPLEX- 手写风格的无衬线字体。cv2.FONT_HERSHEY_SCRIPT_COMPLEX- 手写风格的衬线字体。cv2.FONT_ITALIC- 斜体字的标志,可以与上述任何字体结合使用。
下面是一个示例代码,演示如何在图像上添加不同字体的英文文字:
# -*- coding: utf-8 -*-
import cv2
import numpy as np
# 1.创建一个黑色的空白图像
img = np.zeros((600, 800, 3), np.uint8)
# 2.图像添加文字
text = 'Hello, OpenCV2024'
# 字体列表
fontList = [cv2.FONT_HERSHEY_SIMPLEX,
cv2.FONT_HERSHEY_PLAIN,
cv2.FONT_HERSHEY_DUPLEX,
cv2.FONT_HERSHEY_COMPLEX,
cv2.FONT_HERSHEY_TRIPLEX,
cv2.FONT_HERSHEY_COMPLEX_SMALL,
cv2.FONT_HERSHEY_SCRIPT_SIMPLEX,
cv2.FONT_HERSHEY_SCRIPT_COMPLEX,
cv2.FONT_ITALIC]
fontScale = 1 # 字体缩放比例
color = (255, 255, 255) # 字体颜色白色
# 3.遍历字体列表
for i in range(len(fontList)):
pos = (10, 50 * (i + 1)) # 显示位置
img_Text = cv2.putText(img, text, pos, fontList[i], fontScale, color)
# 4.显示图像
cv2.imshow("Text Example", img_Text)
cv2.waitKey(0)
cv2.destroyAllWindows()
使用Pillow添加中文文字
由于OpenCV不支持中文字符,我们需要借助Pillow库来实现中文文字的添加。具体步骤如下:
- 使用Pillow创建一个文本图像
- 将Pillow图像转换为OpenCV图像格式
下面是一个示例代码,演示如何在图像上添加中文文字:
# -*- coding: utf-8 -*-
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont
# 1.加载原始图像
original_image = cv2.imread('example.png')
# 2.设置中文字体路径(确保路径正确)
font_path = 'simkai.ttf' # 替换为你的中文字体路径
font_size = 30
font_color = (255, 255, 0) # 黄色
text = '我的Python教程@小红牛'
# 3.使用Pillow创建文本图像
img_pil = Image.fromarray(cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB))
print('1.原图的宽高:', img_pil.width, img_pil.height)
draw = ImageDraw.Draw(img_pil)
font = ImageFont.truetype(font_path, font_size)
bbox = draw.textbbox((0, 0), text, font=font)
text_width = bbox[2] - bbox[0]
text_height = bbox[3] - bbox[1]
print('2.水印文字的大小:', text_width, text_height)
# 4.计算水印,显示的位置,这里假设放在右下角
# 获取原始图像的宽高
original_width, original_height = img_pil.size
text_position = (original_width - text_width-50, original_height - text_height-50)
print('3.计算水印显示的位置:', text_position)
# 5.在Pillow图像上绘制文本
draw.text(text_position, text, font=font, fill=font_color)
# 6.将Pillow图像转换回OpenCV图像
text_image = cv2.cvtColor(np.array(img_pil), cv2.COLOR_RGB2BGR)
cv2.imshow('Image with text', text_image)
cv2.imwrite('result.png', text_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
通过以上步骤,我们可以在图像上成功添加中文文字。这个方法不仅适用于中文,也适用于其他非英文字符。
热门推荐
如何通过防伪码和扫码技术验证商品真伪
做功德写合家与合家供奉:中国传统文化中的家庭伦理
隐私权侵权电子证据取证指引
命理学视角下的“好命”
居家美背训练:5个动作搭配科学计划,轻松练出迷人背影
新疆高考多少分可以上华南农业大学(2025录取分数线预测)
长寿花种植全攻略:从种植时间到养护技巧详解
丹麦作为格陵兰岛宗主国,历史上如何应对美国对该岛的领土诉求?
维生素D3的功效、食物来源、摄取量一次看
苍天护佑蒙古语,描写蒙古族的诗句
科普|什么是遗传性血管性水肿?
震荡市生存指南:3分钟学会机构用的网格策略
离职交接遇阻?HR如何用数字化工具化解用工危机
高清小儿舌诊图谱,堪比教科书(建议收藏!)
使用电视机时,有哪些节能技巧可以减少热量产生?
旧房翻新中的卫生间防水问题处理方案
玻尿酸去法令纹术前注意事项
头发损伤修复的实用技巧
打造高效沟通工具:如何让一页PPT既拥挤又明了
中部非省会第一城,又变了
魔方速拧技巧:从入门到精通的全面指南
低空经济概念股激情起飞,三季报却在焦灼
如何降低论文重复率并提高原创性
这27种食物钙含量比牛奶还高,但……
含高钙的食物和水果有哪些
非遗手工技艺:拓印的历史与技术发展
了解拉丁语常识学习英法德意西语势如破竹
电线究竟用软线好还是硬线好
办公软件怎么写签名文字
碘伏不是祛痘“神器”,慎用勿盲从