python显示中文字_Python - 图片上显示中文字符
在对图片数据处理时,将对应的标签信息与图片上一起可视化,是检查数据的一种不错手段.
这里主要包含两种方法是,一种是基于 OpenCV 库,其可以将英文字符显示到图片,但不能显示中文字符;另一种是采用 PIL(Python Imaging Library) 库,可以实现中文字符在图片上的显示.
1. 基于 OpenCV 的英文字符在图片的显示import cv2
img = cv2.imread("test.jpg")
# img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
height, width = img.shape[0], img.shape[1]
# top_left, bottom_right = (20, 100), (500, 300)
# img_box = cv2.rectangle(image,
# tuple(top_left),
# tuple(bottom_right),
# (255, 0, 0),
# 6)
template = "{}: {:.2f}"
test_en_str = "Test en string"
test_image_id = 100
s = template.format(test_en_str, test_image_id)
cv2.putText(img, s, (200, 300), cv2.FONT_HERSHEY_SIMPLEX, 1, (205, 38, 38), 2)
cv2.imshow("Vis en string on the image.", img)
cv2.waitKey()
cv2.imwrite("test_en_str.jpg",img)
如:
2. 基于 PIL 的中文字符在图片的显示
PIL库需要依赖于 FreeType 字体引擎库.
FreeType 库是一个开源免费的高质量,且可移植的字体引擎,提供了访问多种字体格式文件的统一接口.
在 Ubuntu 系统中,可以通过 locate xxx命令查找 .ttc 字体,一般保存在 /usr/share/fonts/opentype/noto/ 路径. 如:locate NotoSansCJK-Black.ttc
# 输出:/usr/share/fonts/opentype/noto/NotoSansCJK-Black.ttc
中文字符在图片上的可视化实现:from PIL import Image, ImageDraw, ImageFont
img_pil = Image.open("/home/hgf/Pictures/image_test/0062pOG9ly1fjhqobbvxej30ob0rob29.jpg")
font = ImageFont.truetype('NotoSansCJK-Black.ttc', 30) # 字体及字体大小
fillColor = (255, 0, 0) # 字体颜色
position = (200, 200) # 文字输出位置
zh_str = "测试显示的中文字符。"
if not isinstance(zh_str, unicode):
zh_str = zh_str.decode('utf8')
draw = ImageDraw.Draw(img_pil)
draw.text(position, zh_str, font=font, fill=fillColor)
img_pil.show()
# img_pil.save("test_zh_str.jpg","jpeg")
如:
3. OpenCV 与 PIL.Image 图像格式相互转换import cv2
from PIL import Image
import numpy
## PIL.Image --> OpenCV
img_pil = Image.open("test.jpg")
img_pil.show()
img_cv2 = cv2.cvtColor(numpy.asarray(img_pil),cv2.COLOR_RGB2BGR)
cv2.imshow("OpenCV",img_cv2)
cv2.waitKey()
## OpenCV --> PIL.Image
img_cv2 = cv2.imread("test.jpg")
cv2.imshow("OpenCV",img_cv2)
img_pil = Image.fromarray(cv2.cvtColor(img_cv2,cv2.COLOR_BGR2RGB))
img_pil.show()
cv2.waitKey()
因此,如果想要采用 OpenCV 在图片上显示中文字符,需要现将图片格式转换为 PIL.Image,在添加中文字符后,再转换回 OpenCV 格式.
4. PIL.ImageDraw 画矩形框from PIL import Image, ImageDraw
img_pil = Image.open("test.jpg")
img_pil.show()
# 创建绘制对象
draw = ImageDraw.Draw(img_pil)
# 画直线
draw.line((x0, y0, x1, y1), color_name)
# (x0, y0, x1, y1) 为直线左上右下定点坐标(下同)
# color_name - 直线颜色
# 画矩形框
draw.rectangle((x0, y0, x1, y1), box_fill_color, box_border_color, box_border_size)
# box_fill_color - 矩形框填充颜色
# box_border_color - 矩形框边界颜色
# box_border_size - 边界框线条宽度
# 如:box_fill_color = ["red", "green", "blue", "fuchsia"]
# box_border_color = ["maroon", "navy", "deepskyblue", "y"]
# 如:
# draw.rectangle((left, top, right, bottom), None, color, 10)
python 支持的颜色:
python显示中文字_Python - 图片上显示中文字符相关推荐
- HTML让文字在图片上显示的几种方法
HTML让文字在图片上显示的几种方法 第一种方式是image 作为背景图片,即:background:url("......."); 例如如下代码块: <div style= ...
- html 文字在图片上显示
第一种方式是image 作为背景图片,即:background:url("......."); 例如如下代码块: <div style="background:ur ...
- HTML文字在图片上显示
第一种方式是image 作为背景图片,即:background:url("......."); 例如如下代码块: <span style="font-family: ...
- 文字在图片上c语言,HTML让文字在图片上显示的几种方法
VXLAN 概念(Part II)- 每天5分钟玩转 OpenStack(109) 上一节我们介绍了 VXLAN 的封装格式以及 VTEP.今天我们将通过例子讨论 VXLAN 封装和转发包的过程,以及 ...
- python绘制汉字_OpenCV Python 绘制中文字
By 凌顺 2019年9月12日 本示例使用的OpenCV版本是:4.1.1 运行Python的编辑器:Jupyter notebook 示例目的 通过使用PLI在图片上添加中文字符. PIL(Pyt ...
- python歌词特效,根据歌词的进度在图片上显示歌词
在前文中我们已经可以在图片上书写中文歌词了,效果如下: 那么我们如何才能控制歌词的出现和消失呢,依次来达到唱到这句歌词的时候才显现出来呢. 这里我们根据行数来控制显示. 首先我们来控制只输出前15行歌 ...
- css如何实现鼠标移至图片上显示遮罩层及文字
css如何实现鼠标移至图片上显示遮罩层及文字 问题:一张图片当鼠标移动到上方时,会显示一个遮罩层,并且显示一些提示文字 html: <div class="contentimg&quo ...
- 鼠标悬停 -css如何实现鼠标移至图片上显示遮罩层及文字
搜索这个效果的时候,很多人都是用css结合jQuery实现的,其实直接用css也可以实现哦~ 效果前: 效果后: 代码: <!DOCTYPE html> <html lang=&qu ...
- html图片左侧现实文字,css 关于图片上显示文字
图片上显示文字,现在有很多主流的方法,最常用的就是position设置为relative或者absolute. 本文带来了一种新的实现方式:采用height为0+overflow为visible的方式 ...
- Python使用pillow库往图片上写入文字或覆盖另一张图片
Python使用pillow库往图片上写入文字或覆盖另一张图片 python之pillow是 Python 的第三方图像处理库.pillow是PIL( Python Imaging Library)基 ...
最新文章
- 卡联科技与正元地理合作 打造智慧城市
- 算法72----最大正方形
- 洛谷P2512 糖果传递
- c语言类型名占字节,在C语言中,不同类型数据所占字节数
- 解析针对 HTTP/2 协议的不同步攻击
- go reflect的用法
- SpringCloudConfig整合Nacos
- dataframe 如何选中某列的一行_带你领略pandas中多表之间如何处理
- oracle 11g的启动和关闭
- vuejs页面跳转_【Vue 学习】 VueJS 生命周期
- udhcpc 后台运行的方法【总结】
- java怎么传入参数到方法当中_java中方法传入参数时:值传递还是址传递?
- 虚拟机设计与实现:以jvm为例 pdf_Java虚拟机:Jvm概念和原理详解以及GC机制的分析...
- 星露谷服务器上没有空闲位置,星露谷 我在社区中心背面藏了些东西 | 手游网游页游攻略大全...
- php session销毁方法,PHP session变量的销毁
- Unix时间和leap seconds(闰秒)简要分析
- 安卓真机如何连接本地服务器_Android真机连接本地服务器安装部署方法
- 惠州市政企信息化(互联网)市场调研报告
- HEVD--Win7_x32下内核池溢出利用
- 不同应用选择荧光染料 -CY7 ALK脂溶性Sulfo-Cyanine7 alkyne 结构式应用
热门文章
- 用C语言打印九九乘法表
- 给马斯克群发卫星算本账,星链计划跟5G有可比性么?
- 元素周期表排列的规律_化学元素周期表的规律 元素周期表的规律
- 在Mac和PC之间共享鼠标键盘(拥有多台电脑者必看)
- Tuxera NTFS for Mac(mac读写NTFS磁盘工具)
- mysql建立唯一索引升序_MySQL数据库SQL优化技巧六之唯一索引
- 飞控C语言开源,几大主流开源飞控平台优劣比较.doc
- 终端神器MobaXterm及专业破解版下载
- Redis_04_Redis客户端
- 反转链表 c++实现