opencv-python 中文显示在图像上
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 中文显示在图像上相关推荐
- OpenCV python(二)图像预处理:改变图像大小 提取感兴趣区域
OpenCV python(二)图像预处理:改变图像大小 && 提取感兴趣区域 一.改变图像大小 1.获取图像宽.高.通道数 2.resize函数 3.案例 二.ROI感兴趣区域 1. ...
- python 中文显示乱码如何处理
你好! 解决 Python 中文显示乱码的方法有以下几种: 在文件头添加如下代码: # -*- coding: utf-8 -*- 在文件头添加如下代码: #!/usr/bin/python # -* ...
- OpenCV图像处理(7)——图像上写TEXT
在图像上写字 /* 参数说明: 1.输入输出图像 2.需要写的字符 3.文字的左上角坐标 4.字体 5.标准字体的放大倍数(越大,字体越大) 6... 7... */ putText(copySrc, ...
- python中文显示不出来_彻底解决Python里matplotlib不显示中文的问题
在很长一段时间里用Python绘图,matplotlib都不能很好的显示中文,起初是认为我的pycharm里的设置问题,但是发现同样的问题在spyder里也同样的出现了,虽然有的地方可以用英文实在不行 ...
- python rgb 图像_在Python中显示RGB图像的不同平面
python rgb 图像 A colored image can be represented as a 3 order matrix. The first order is for the row ...
- python 密度聚类 使用_使用python+sklearn实现硬币图像上的结构化Ward层次聚类演示...
注意:单击此处https://urlify.cn/EFRn6b下载完整的示例代码,或通过Binder在浏览器中运行此示例使用Ward层次聚类计算二维图像的分割,由于聚类在空间上受到了限制,所以每个分割 ...
- 【opencv有趣应用】测量图像上的特定角度值
今天做一个角度的测量器 在图像上如果想测量一个角度,只需要用鼠标选择这个角度的三个点,就能自动测量出这个角度值. 这里用到的知识是余弦定理 代码如下: import math import cv2 i ...
- OpenCV—python 模板匹配与图像特征匹配
文章目录 一.理论介绍与算法 二.算法代码 单目标匹配 多目标匹配 三 多尺度模板匹配 一.理论介绍与算法 模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个 ...
- python 和matlab处理图像上的优劣_Matlab图像处理基本操作及一些滤波算法
由于需要frost滤波进行滤波,一通查找到了matlab版本,以前电脑上有matlab软件,但是一直没用到,现在东西好不容易找到了,就搜了下相关教程,整理一个博客.感觉matlab语言和python语 ...
最新文章
- 为什么我们做分布式要用 Redis ?
- PHP小白学习日程之旅
- go语言json字符串解析为结构体数组,结构体指针的数组
- Jacobian vector products(转载+翻译+代码+解读)
- django 不包括字段 序列化器_手写一个Django序列化功能
- MSP432P401R TI Drivers 库函数学习笔记(四)GPIO
- 魔兽世界最新网通服务器列表,魔兽世界网通区,魔兽世界网通区在几区
- zero-shot learning
- [Android6.0] StageFright解码流程小结
- ##稻盛和夫的名言##
- SAP 常用BAPI ( 二)
- urllib库爬取拍信创意图片(post请求)json传参
- RF Python扩展测试库
- 供参考的the-gan-zoo,列出的GAN相关模型和论文
- 使用Anbox在Jetson Nano 2GB上运行Android应用程序
- centos挂载u盘只读_centos挂载u盘只读_针对优盘在linux下文件只读的解决方案
- linux系统删除lammps任务,Linux 的常用命令
- Python(5):上机练习——创建一个类People
- java实现第一个数字
- 商家收款码怎样申请做代理?共有两种途径