python 解决cv2绘制中文乱码问题

因为使用cv2.putText() 只能显示英文字符,中文会出现乱码问题,

因此使用PIL在图片上绘制添加中文,可以指定字体文件。

大体思路:

OpenCV图片格式转换成PIL的图片格式;

使用PIL绘制文字;

PIL图片格式转换成OpenCV的图片格式;

具体实现:

  1. # coding=utf-8
  2. # cv2解决绘制中文乱码
  3. import cv2
  4. import numpy
  5. from PIL import Image, ImageDraw, ImageFont
  6.  
  7. def cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20):
  8. if (isinstance(img, numpy.ndarray)): # 判断是否OpenCV图片类型
  9. img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
  10. # 创建一个可以在给定图像上绘图的对象
  11. draw = ImageDraw.Draw(img)
  12. # 字体的格式
  13. fontStyle = ImageFont.truetype(
  14. "font/simsun.ttc", textSize, encoding="utf-8")
  15. # 绘制文本
  16. draw.text((left, top), text, textColor, font=fontStyle)
  17. # 转换回OpenCV格式
  18. return cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)
  19.  
  20.  
  21. if __name__ == '__main__':
  22. img = cv2ImgAddText(cv2.imread('img1.jpg'), "大家好,我是片天边的云彩", 10, 65, (0, 0 , 139), 20)
  23. cv2.imshow('show', img)
  24. if cv2.waitKey(100000) & 0xFF == ord('q'):
  25. cv2.destroyAllWindows()
  26.  

效果展示:

以上这篇python 解决cv2绘制中文乱码问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: python 解决cv2绘制中文乱码问题
本文地址: http://www.cppcns.com/jiaoben/python/294616.html

posted on   Hi,王松柏  阅读(3151)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示