在pyhton中opencv显示中文汉字乱码

import cv2,os #加载Open CV 和系统路径管理
recogizer=cv2.face.LBPHFaceRecognizer_create()#加载训练数据集文件
recogizer.read('trainer/trainer1.yml')
names=[]
def face_detect_demo(img):#自定义函数,准备识别的图片
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#转换为灰度
face_detector = cv2.CascadeClassifier('venv/Lib/site-packages/cv2/data/haarcascade_frontalface_alt2.xml')#加载opencv分类器
face=face_detector.detectMultiScale(gray,1.1,5,cv2.CASCADE_SCALE_IMAGE,(200,200),(400,400)) #框人脸区域
for x,y,w,h in face:
cv2.rectangle(img,(x,y),(x+w,y+h),color=(0,255,0),thickness=2)# 人脸识别
ids, confidence = recogizer.predict(gray[y:y + h, x:x + w])# 人脸识别,获得对比值
print('序号:',ids,'阀值:', confidence)#打印输出对比值
if confidence >80:
cv2.putText(img, '不认识y', (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)#显示文字的坐标点
else:
cv2.putText(img, str(names[ids - 1]), (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 2)
cv2.imshow('test_window',img) ## names是指保存的图片命名为中文,如:1.张三.jpg;2.李四.jpg。这些中文都显示为乱码

def name():
path = 'data/' ##该文件夹下放的就是图片,命名为中文,如:1.张三.jpg;2.李四.jpg。这些中文都显示为乱码
#names = []
imagePaths=[os.path.join(path,f) for f in os.listdir(path)]
for imagePath in imagePaths:
name = str(os.path.split(imagePath)[1].split('.',2)[1])
names.append(name)

cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
name()
while True:
flag,frame=cap.read()
if not flag:
break
face_detect_demo(frame)
if ord(' ') == cv2.waitKey(10):
break

cap.release()
cv2.destroyAllWindows()

你用utf8格式

opencv不支持中文读写,如果真的需要,请用文件流读写

我的上面显示中文是可以的,https://blog.csdn.net/wd1603926823/article/details/108245043