opencv_python 的 cv2.namedWindow 与 cv2.putText 无法显示中文问题
程序员文章站
2022-04-09 20:08:35
...
opencv_python 的 cv2.namedWindow 与 cv2.putText 输入中文问题
cv2.namedWindow 与 cv2.imshow 的窗口名设置为中文
问题:
cv2.namedWindow('中文')
cv2.imshow('中文', frame)
解决方法:
def zh_ch(string):
return string.encode("gbk").decode('UTF-8', errors='ignore')
cv2.namedWindow(zh_ch('中文'))
cv2.imshow(zh_ch('中文'), frame)
原因分析:
因为namedWindow和imshow的窗口名采用gbk编码,而Python3默认UTF-8编码,所以应该将中文转成gbk编码的格式。但是这样转换并不完美,大部分中文都不能转换,无法显示,建议还是使用英文命名窗口
cv2.putText往图片插入中文
问题:
text = "{}: {:.2f}%".format(emotion, prob * 100)
cv2.putText(frame, text, (10, 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.45,
(255, 255, 255), 2)
解决方法:抛弃cv2.putText 投入 PIL 的怀抱
pip install pillow
- 调用PIL
from PIL import Image, ImageDraw, ImageFont
ret, frame = cv2.read()
def addText(img, text, i):
# 判断图片是否为ndarray格式,转为RGB图片
if (isinstance(img, numpy.ndarray)):
img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
draw = ImageDraw.Draw(img)
# 参数依次为 字体、字体大小、编码
fontStyle = ImageFont.truetype("font/simsun.ttc", 20, encoding="utf-8")
# 参数依次为位置、文本、颜色、字体
draw.text((10, (i * 50) + 23), text, (255, 255, 255), font=fontStyle)
# 转回BGR图片、ndarray格式
return cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)
结果:
推荐阅读
-
FUck ,终于解决phpmyadimn插入中文,页面无法正常显示的有关问题
-
IIS无法显示中文名称图片问题的解决方法
-
Python使用matplotlib绘图无法显示中文问题的解决方法
-
Android Studio3.0 TextView/string.xml无法显示中文问题的解决办法
-
termux中matplotlib无法显示中文问题的解决方法
-
解决pandas 作图无法显示中文的问题
-
解决python3爬虫无法显示中文的问题
-
解决matplotlib作图中文无法正常显示的问题
-
IIS无法显示中文名称图片问题的解决方法
-
解决mysql无法插入中文数据及插入后显示乱码的问题(亲测图文解说)_MySQL