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()
通过以上步骤,我们可以在图像上成功添加中文文字。这个方法不仅适用于中文,也适用于其他非英文字符。
热门推荐
《烟雨江湖》新手必看的零氪微氪攻略指南
储存剥好大蒜有讲究:冷藏保味,冷冻耐存
双色球投资回报率揭秘:理性才是王道
股市OBV指标详解:从成交量变化洞察主力动向
如何根据路况合理控制车速?三种常见场景下的车速控制技巧
专家建议:七种方法有效预防肾结石
《我的沉默震耳欲聋》:讲述鲁迅与14位民国大师的爱恨情仇
网传“甲醛菜”致癌?科学检测揭示蔬菜安全真相
FAL、SVDS、P90、AR57:暗区突围黑金特别版武器评测
肾结石饮食管理,你真的懂吗?
白洞是否存在,科学家给出最新答案
六步提升苹果手机游戏性能,从系统更新到手机散热
嗨,泉州|吃碗糕、送花灯、踩街……这些民俗你知道几个?
冬樱花绽放600年古村,攀枝花迤沙拉成冬日赏花新热点
在单位上台讲话,千万别说“感谢领导”,牢记这3点才是高情商
暖气不热找谁管?一文详解供暖投诉流程
福如东海,寿比南山:解读传统祝寿词的文化密码
医疗废物全程数字化监管,上海这家医院打造“无废”标杆
人体内真有6公斤宿便?如何才能排出那些“赖着不走”的宿便?
双十一后,教你快速解绑微信和拼多多
创意店名助力实体服装店突破电商重围
新疆人大代表变身“带货主播”,特色农产品插上电商翅膀
常见散热方法
幼儿园体操垫游戏教案小班
江西摄影打卡圣地:南昌、篁岭、婺女洲
全球第四大粮食作物土豆:营养价值高,烹饪方式多样
职场人际关系:助推职业发展的关键力量
挖掘机模拟游戏:多种机型任你选,运输平整任务等你来
从成都到西双版纳:7天穿越四川云南旅游攻略
深度剖析:切尔西的“买人赚钱”迷局与伯利的财务魔术