You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3/OpenCV显示带变音符号字符的问题求助

解决OpenCV cv2.putText()显示变音符号为问号的问题

嘿,这个问题我之前也碰到过!OpenCV自带的cv2.putText()确实有个坑——它默认的字体(比如FONT_HERSHEY_SIMPLEX这类)只支持ASCII字符,像é、ä、ô这类带变音符号的Unicode字符根本没法正常渲染,所以才会被替换成问号。而控制台能正常显示,是因为你的终端使用的字体本身支持Unicode字符集。

下面给你两个靠谱的解决方案,任选其一就行:

方案一:用PIL(Pillow)库绘制文本后转OpenCV格式

PIL对Unicode字符的支持更好,我们可以先把OpenCV的图像转成PIL格式,用PIL绘制文本,再转回OpenCV格式显示:

步骤与代码示例

import cv2
from PIL import Image, ImageDraw, ImageFont
import numpy as np

# 假设你的摄像头帧是frame,带变音符号的文本是message
message = "Café, Äpfel, Ômega"

# 1. 将OpenCV的BGR图像转为RGB格式(PIL用RGB)
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# 2. 转换为PIL Image对象
pil_image = Image.fromarray(frame_rgb)
# 3. 加载支持Unicode的字体(比如DejaVuSans、Arial、Noto Sans)
# 可以指定字体文件路径,比如系统字体路径或项目里的字体文件
font = ImageFont.truetype("DejaVuSans.ttf", 40)  # 字体大小设为40
# 4. 创建绘图对象
draw = ImageDraw.Draw(pil_image)
# 5. 绘制文本:位置(20,180),颜色用RGB格式的绿色(0,255,0)
draw.text((20, 180), message, font=font, fill=(0, 255, 0))
# 6. 转回OpenCV的BGR格式
frame = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)

# 显示画面
cv2.imshow('Webcam', frame)

方案二:使用OpenCV的freetype模块(需安装扩展包)

OpenCV的扩展包opencv-contrib-python里有cv2.freetype模块,支持加载TrueType字体,直接渲染Unicode字符:

步骤与代码示例

  1. 先安装扩展包:
pip install opencv-contrib-python
  1. 编写代码:
import cv2

# 初始化FreeType字体加载器
ft = cv2.freetype.createFreeType2()
# 加载支持Unicode的字体文件,比如DejaVuSans.ttf
ft.loadFontData(fontFileName='DejaVuSans.ttf', id=0)

message = "Café, Äpfel, Ômega"
# 绘制文本:参数依次是图像、文本、位置、字体高度、颜色、厚度
ft.putText(img=frame, text=message, org=(20, 180), fontHeight=40, color=(0, 255, 0), thickness=3)

cv2.imshow('Webcam', frame)

注意事项

  • 确保你使用的字体文件确实支持这些变音符号,推荐用DejaVu Sans、Arial、Noto Sans这类通用字体
  • 字体路径说明:
    • Windows系统:字体通常在C:\Windows\Fonts\,比如arial.ttf
    • Linux系统:字体路径一般是/usr/share/fonts/或~/.fonts/
    • Mac系统:字体在/Library/Fonts/
    • 也可以下载一个支持Unicode的TrueType字体,放在项目目录里,直接用相对路径引用

内容的提问来源于stack exchange,提问作者Materia Dura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 21:07:50