OpenCV 使用 pytorch 模型 通过摄像头实时表情识别

您所在的位置:网站首页 opencv表情识别 OpenCV 使用 pytorch 模型 通过摄像头实时表情识别

OpenCV 使用 pytorch 模型 通过摄像头实时表情识别

2024-07-17 13:13| 来源: 网络整理| 查看: 265

表情识别

上次拿Fer2013数据集训练出来的模型,可以借助opencv实现摄像头实时检测表情,准确率当然一言难尽,不过玩一下还是阔以的。

代码 import cv2 import torchvision from Mynn import * # 储存pytorch网络结构 from PIL import Image model = My_model('./m0.pth').cuda() #加载训练好的pytorch模型 transforms = torchvision.transforms.Compose([ torchvision.transforms.Grayscale(), torchvision.transforms.Resize((48,48)), torchvision.transforms.ToTensor() ])#定义图像变换以符合网络输入 emotion = ["angry","disgust","fear","happy","sad","surprised","neutral"]#表情标签 cap = cv2.VideoCapture(0)# 摄像头,0是笔记本自带摄像头 face_cascade = cv2.CascadeClassifier('C:\\Users\\11705\\Anaconda3\\Library\\etc\\haarcascades\\haarcascade_frontalface_default.xml') #opencv自带的一个面部识别分类器 while(cap.isOpened()): ret, frame = cap.read() frame = frame[:,::-1,:]#水平翻转,符合自拍习惯 frame= frame.copy() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) face = face_cascade.detectMultiScale(gray,1.1,3) img = frame if(len(face)>=1): (x,y,w,h)= face[0] cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2) img = frame[:][y:y+h,x:x+w] # 如果分类器能捕捉到人脸,就对其进行剪裁送入网络,否则就将整张图片送入 img = Image.fromarray(img) img = transforms(img) img = img.reshape(1,1,48,48).cuda() pre = model(img).max(1)[1].item() frame = cv2.putText(frame, emotion[pre], (100, 100), cv2.FONT_HERSHEY_SIMPLEX, 1, (55,255,155), 2) #显示窗口第一个参数是窗口名,第二个参数是内容 cv2.imshow('emotion', frame) if cv2.waitKey(1) == ord('q'):#按q退出 break cap.release() cv2.destroyAllWindows()


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3