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 进行许可。
评论