在对图片数据处理时,将对应的标签信息与图片上一起可视化,是检查数据的一种不错手段.

这里主要包含两种方法是,一种是基于 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 - 图片上显示中文字符相关推荐

  1. HTML让文字在图片上显示的几种方法

    HTML让文字在图片上显示的几种方法 第一种方式是image 作为背景图片,即:background:url("......."); 例如如下代码块: <div style= ...

  2. html 文字在图片上显示

    第一种方式是image 作为背景图片,即:background:url("......."); 例如如下代码块: <div style="background:ur ...

  3. HTML文字在图片上显示

    第一种方式是image 作为背景图片,即:background:url("......."); 例如如下代码块: <span style="font-family: ...

  4. 文字在图片上c语言,HTML让文字在图片上显示的几种方法

    VXLAN 概念(Part II)- 每天5分钟玩转 OpenStack(109) 上一节我们介绍了 VXLAN 的封装格式以及 VTEP.今天我们将通过例子讨论 VXLAN 封装和转发包的过程,以及 ...

  5. python绘制汉字_OpenCV Python 绘制中文字

    By 凌顺 2019年9月12日 本示例使用的OpenCV版本是:4.1.1 运行Python的编辑器:Jupyter notebook 示例目的 通过使用PLI在图片上添加中文字符. PIL(Pyt ...

  6. python歌词特效,根据歌词的进度在图片上显示歌词

    在前文中我们已经可以在图片上书写中文歌词了,效果如下: 那么我们如何才能控制歌词的出现和消失呢,依次来达到唱到这句歌词的时候才显现出来呢. 这里我们根据行数来控制显示. 首先我们来控制只输出前15行歌 ...

  7. css如何实现鼠标移至图片上显示遮罩层及文字

    css如何实现鼠标移至图片上显示遮罩层及文字 问题:一张图片当鼠标移动到上方时,会显示一个遮罩层,并且显示一些提示文字 html: <div class="contentimg&quo ...

  8. 鼠标悬停 -css如何实现鼠标移至图片上显示遮罩层及文字

    搜索这个效果的时候,很多人都是用css结合jQuery实现的,其实直接用css也可以实现哦~ 效果前: 效果后: 代码: <!DOCTYPE html> <html lang=&qu ...

  9. html图片左侧现实文字,css 关于图片上显示文字

    图片上显示文字,现在有很多主流的方法,最常用的就是position设置为relative或者absolute. 本文带来了一种新的实现方式:采用height为0+overflow为visible的方式 ...

  10. Python使用pillow库往图片上写入文字或覆盖另一张图片

    Python使用pillow库往图片上写入文字或覆盖另一张图片 python之pillow是 Python 的第三方图像处理库.pillow是PIL( Python Imaging Library)基 ...

最新文章

  1. 卡联科技与正元地理合作 打造智慧城市
  2. 算法72----最大正方形
  3. 洛谷P2512 糖果传递
  4. c语言类型名占字节,在C语言中,不同类型数据所占字节数
  5. 解析针对 HTTP/2 协议的不同步攻击
  6. go reflect的用法
  7. SpringCloudConfig整合Nacos
  8. dataframe 如何选中某列的一行_带你领略pandas中多表之间如何处理
  9. oracle 11g的启动和关闭
  10. vuejs页面跳转_【Vue 学习】 VueJS 生命周期
  11. udhcpc 后台运行的方法【总结】
  12. java怎么传入参数到方法当中_java中方法传入参数时:值传递还是址传递?
  13. 虚拟机设计与实现:以jvm为例 pdf_Java虚拟机:Jvm概念和原理详解以及GC机制的分析...
  14. 星露谷服务器上没有空闲位置,星露谷 我在社区中心背面藏了些东西 | 手游网游页游攻略大全...
  15. php session销毁方法,PHP session变量的销毁
  16. Unix时间和leap seconds(闰秒)简要分析
  17. 安卓真机如何连接本地服务器_Android真机连接本地服务器安装部署方法
  18. 惠州市政企信息化(互联网)市场调研报告
  19. HEVD--Win7_x32下内核池溢出利用
  20. 不同应用选择荧光染料 -CY7 ALK脂溶性Sulfo-Cyanine7 alkyne 结构式应用

热门文章

  1. 用C语言打印九九乘法表
  2. 给马斯克群发卫星算本账,星链计划跟5G有可比性么?
  3. 元素周期表排列的规律_化学元素周期表的规律 元素周期表的规律
  4. 在Mac和PC之间共享鼠标键盘(拥有多台电脑者必看)
  5. Tuxera NTFS for Mac(mac读写NTFS磁盘工具)
  6. mysql建立唯一索引升序_MySQL数据库SQL优化技巧六之唯一索引
  7. 飞控C语言开源,几大主流开源飞控平台优劣比较.doc
  8. 终端神器MobaXterm及专业破解版下载
  9. Redis_04_Redis客户端
  10. 反转链表 c++实现