opencv-python 中文显示在图像上

opencv只能在图像上输出英文字符,不支持汉字。可以和PIL一起使用实现在图像上输出中文。结合使用时注意一下几点:

1)opencv读取图像后图像颜色通道是BGR排列的,而PIL读取的图像是RGB排列的。要注意图像颜色通道排列的转化cv2.cvtColor(img, cv2.COLOR_BGR2RGB)。

2)opencv读取完图像存储格式是numpy。PIL是自己定义的格式。要调用PIL的方法需要先将numpy转为自己的格式。pilimg = Image.fromarray(cv2img)。相反,PIL处理完后,调用opencv方法要将格式转回numpy。

cv2charimg = cv2.cvtColor(np.array(pilimg), cv2.COLOR_RGB2BGR)。

不转的话会报错。TypeError: Expected cv::UMat for argument 'src'

3)字体simhei.ttf需要下载,然后在font = ImageFont.truetype("./simhei.ttf", 20, encoding="utf-8")指定simhei.ttf的路径即可

4)中文编码为utf-8。否则中文会显示为矩形。str1 = str1.decode('utf-8')

源码和结果如下:

# -*- coding: utf-8 -*-import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont# cv2读取图片
img = cv2.imread('timg.jpg')
cv2img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # cv2和PIL中颜色的hex码的储存顺序不同
pilimg = Image.fromarray(cv2img)str1 = '中文,hi.我来自远方'
if not isinstance(str1,unicode):str1 = str1.decode('utf-8')# PIL图片上打印汉字
draw = ImageDraw.Draw(pilimg)  # 图片上打印
font = ImageFont.truetype("./simhei.ttf", 20, encoding="utf-8")  # 参数1:字体文件路径,参数2:字体大小
draw.text((0, 0), str1, (255, 0, 0), font=font)  # 参数1:打印坐标,参数2:文本,参数3:字体颜色,参数4:字体# PIL图片转cv2 图片
cv2charimg = cv2.cvtColor(np.array(pilimg), cv2.COLOR_RGB2BGR)
# cv2.imshow("图片", cv2charimg) # 汉字窗口标题显示乱码
cv2.imshow("photo", cv2charimg)cv2.waitKey(0)

输出结果:

opencv-python 中文显示在图像上相关推荐

  1. OpenCV python(二)图像预处理:改变图像大小 提取感兴趣区域

    OpenCV python(二)图像预处理:改变图像大小 && 提取感兴趣区域 一.改变图像大小 1.获取图像宽.高.通道数 2.resize函数 3.案例 二.ROI感兴趣区域 1. ...

  2. python 中文显示乱码如何处理

    你好! 解决 Python 中文显示乱码的方法有以下几种: 在文件头添加如下代码: # -*- coding: utf-8 -*- 在文件头添加如下代码: #!/usr/bin/python # -* ...

  3. OpenCV图像处理(7)——图像上写TEXT

    在图像上写字 /* 参数说明: 1.输入输出图像 2.需要写的字符 3.文字的左上角坐标 4.字体 5.标准字体的放大倍数(越大,字体越大) 6... 7... */ putText(copySrc, ...

  4. python中文显示不出来_彻底解决Python里matplotlib不显示中文的问题

    在很长一段时间里用Python绘图,matplotlib都不能很好的显示中文,起初是认为我的pycharm里的设置问题,但是发现同样的问题在spyder里也同样的出现了,虽然有的地方可以用英文实在不行 ...

  5. python rgb 图像_在Python中显示RGB图像的不同平面

    python rgb 图像 A colored image can be represented as a 3 order matrix. The first order is for the row ...

  6. python 密度聚类 使用_使用python+sklearn实现硬币图像上的结构化Ward层次聚类演示...

    注意:单击此处https://urlify.cn/EFRn6b下载完整的示例代码,或通过Binder在浏览器中运行此示例使用Ward层次聚类计算二维图像的分割,由于聚类在空间上受到了限制,所以每个分割 ...

  7. 【opencv有趣应用】测量图像上的特定角度值

    今天做一个角度的测量器 在图像上如果想测量一个角度,只需要用鼠标选择这个角度的三个点,就能自动测量出这个角度值. 这里用到的知识是余弦定理 代码如下: import math import cv2 i ...

  8. OpenCV—python 模板匹配与图像特征匹配

    文章目录 一.理论介绍与算法 二.算法代码 单目标匹配 多目标匹配 三 多尺度模板匹配 一.理论介绍与算法 模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个 ...

  9. python 和matlab处理图像上的优劣_Matlab图像处理基本操作及一些滤波算法

    由于需要frost滤波进行滤波,一通查找到了matlab版本,以前电脑上有matlab软件,但是一直没用到,现在东西好不容易找到了,就搜了下相关教程,整理一个博客.感觉matlab语言和python语 ...

最新文章

  1. 为什么我们做分布式要用 Redis ?
  2. PHP小白学习日程之旅
  3. go语言json字符串解析为结构体数组,结构体指针的数组
  4. Jacobian vector products(转载+翻译+代码+解读)
  5. django 不包括字段 序列化器_手写一个Django序列化功能
  6. MSP432P401R TI Drivers 库函数学习笔记(四)GPIO
  7. 魔兽世界最新网通服务器列表,魔兽世界网通区,魔兽世界网通区在几区
  8. zero-shot learning
  9. [Android6.0] StageFright解码流程小结
  10. ##稻盛和夫的名言##
  11. SAP 常用BAPI ( 二)
  12. urllib库爬取拍信创意图片(post请求)json传参
  13. RF Python扩展测试库
  14. 供参考的the-gan-zoo,列出的GAN相关模型和论文
  15. 使用Anbox在Jetson Nano 2GB上运行Android应用程序
  16. centos挂载u盘只读_centos挂载u盘只读_针对优盘在linux下文件只读的解决方案
  17. linux系统删除lammps任务,Linux 的常用命令
  18. Python(5):上机练习——创建一个类People
  19. java实现第一个数字
  20. 商家收款码怎样申请做代理?共有两种途径

热门文章

  1. Pytorch3D_上手学习3D的AI模型
  2. MIG连载-----写模块(3)
  3. 什么样的员工容易被提拔为管理者,他们有哪些共同特质?
  4. 最便捷的港股/A股/美股实时行情API【免费-免费-免费滴,已应用到策略中】
  5. Wps日期时间格式转文本、科学计数法转数字
  6. 126网易邮箱设置授权码
  7. 如何解决青年大学习的复制粘贴问题???
  8. 能够修改证件照的软件有哪些?分享两种好用的修改工具
  9. 基于Qt的笛卡尔心形表白程序
  10. java mac地址 加冒号_Mac加减法,Mac地址加1,Mac地址减1