如何在OpenCV状态栏中正确显示°(度数符号)避免出现°?
解决OpenCV状态栏显示度数符号乱码问题
你遇到的cv2.displayStatusBar(winname, '°')显示成°的问题,根源是opencv-python 4.1.0.25版本的displayStatusBar接口对非ASCII字符的编码处理有局限——它默认把输入字符串按Latin-1编码解析,而你传入的°是UTF-8编码(占2字节:0xC2 0xB0),这两个字节被当作Latin-1字符解析时,0xC2对应Â,0xB0对应°,所以出现了乱码。
给你两个可行的解决办法:
- 直接用Latin-1编码的转义字符表示度数符号
cv2.displayStatusBar(winname, '\xb0')
- 将UTF-8的度数符号转成Latin-1编码格式后传入
degree_char = '°'.encode('latin-1').decode('latin-1') cv2.displayStatusBar(winname, degree_char)
如果后续有条件,也可以升级opencv-python到4.5及以上版本,新版本对Unicode字符的支持更完善,直接传入'°'就能正常显示。
内容的提问来源于stack exchange,提问作者maiermic
相关产品推荐
相关产品推荐

