OpenCV汉字输出

在Python中,matplotlib
和opencv-python
(cv2
)是两套独立的库,它们的字体配置互不影响。你遇到的cv2.imshow
显示中文失败的问题,需要从以下两个方向排查和解决:
1. OpenCV本身不支持直接渲染中文
OpenCV的cv2.putText()
函数默认不支持Unicode字符(包括中文),直接传递中文字符串会导致乱码或显示异常。而cv2.imshow()
显示图像时,如果图像本身包含未正确渲染的文本,自然无法正确显示中文。
2. 解决方案:使用PIL渲染中文
使用PIL(Python Imaging Library)绘制中文**
1 | from PIL import Image, ImageDraw, ImageFont |
关键注意事项
字体文件路径:
- 确保系统中存在中文字体文件(如
simhei.ttf
),Windows系统通常位于C:\Windows\Fonts
,Linux/Mac需手动安装。 - 免费下载字体的网站,比如 [字体家] : http://www.zitijia.com
- 确保系统中存在中文字体文件(如
OpenCV版本:
cv2.freetype
需要OpenCV编译时启用opencv_contrib
模块。如果使用预编译的OpenCV包,可能不支持此功能。
编码问题:
- 确保Python文件本身保存为UTF-8编码(避免中文字符串被错误解析)。
总结
plt.rcParams['font.sans-serif']
仅影响matplotlib
的绘图,与cv2
无关。- 要在OpenCV中显示中文,需通过PIL或
cv2.freetype
手动渲染文本到图像上。 - 始终确保字体文件路径正确,且编码环境支持中文。
- 标题: OpenCV汉字输出
- 作者: lemon
- 创建于 : 2025-04-14 13:11:46
- 更新于 : 2025-04-14 13:32:01
- 链接: https://lemon2003.github.io/post/20250414131146.html
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论