# 新手速成---TensorFlow实现jaffe表情识别--准备工作+step1

### 具体步骤

step1 裁剪人脸（将人脸区域裁剪出，获得的人脸区域缩放为48*48大小的图像，存储为.csv格式数据．） ，就是在你指定的路径输出一个Excel文件

step2 建立CNN，训练样本
step3 输出日志文件，折线图
step4 tensorboard查看网络结构图

step1常见问题：写路径出错，因为对Python不熟，这种错误我就没用r,直接“\\“，简单粗暴

# -*- coding: utf-8 -*-
"""
Created on Sat Nov 24 11:39:44 2018

"""

# -*- coding: utf-8 -*-
"""
Created on Sat Nov 24 11:15:45 2018

"""

import cv2
import os
import numpy as np
import csv

if len(rects) == 0:
return []
rects[:, 2:] += rects[:, :2]
return rects

#f = "/home/w/mycode/jaffe/"
#jaffe 文件夹所在路径
fs = os.listdir(f)#列出路径下所有文件和文件夹
data = np.zeros([213, 48*48], dtype=np.uint8)
label = np.zeros([213], dtype=int)
i = 0
for f1 in fs:
#具体文件夹考虑
tmp_path = os.path.join(f, f1)#每张图片的全路径，f+f1
if not os.path.isdir(tmp_path): #isdir判断路径是否为目录
# print(tmp_path[len(f):])
dst = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #读取图片并转换
for x1, y1, x2, y2 in rects:
cv2.rectangle(img,(x1+10,y1+20),(x2-10,y2),(0,255,255),2)
# 调整截取脸部区域大小
img_roi = np.uint8([y2-(y1+20), (x2-10)-(x1+10)])
roi = dst[y1+20:y2, x1+10:x2-10]
img_roi = roi
re_roi = cv2.resize(img_roi, (48,48))
# 获得表情label
img_label = tmp_path[len(f)+3:len(f)+5]
# print(img_label)
if img_label == 'AN':
label[i] = 0
elif img_label == 'DI':
label[i] = 1
elif img_label == 'FE':
label[i] = 2
elif img_label == 'HA':
label[i] = 3
elif img_label == 'SA':
label[i] = 4
elif img_label == 'SU':
label[i] = 5
elif img_label == 'NE':
label[i] = 6
else:
print("get label error.......\n")

data[i][0:48*48] = np.ndarray.flatten(re_roi)
i = i + 1

# cv2.imshow("src", dst)
# cv2.imshow("img", img)
# if cv2.waitKey() == 32:
#     continue

#with open(r"/home/.../face.csv","w") as csvfile: #只读的方式打开文件
#with open("C:\\Users\\Administrator\\Desktop\\recognize\\face.csv","w") as csvfile: #r只读的方式打开文件,w 写入文件，文件不存在则创建新文件
#遇到：冒号的就是一个方法体，要一起运行
with open("C:\\Users\\Administrator\\Desktop\\recognize\\face.csv","w") as csvfile: #r只读的方式打开文件,w 写入文件，文件不存在则创建新文件
writer = csv.writer(csvfile)
writer.writerow(['emotion', 'pixels'])
for i in range(len(label)):
data_list = list(data[i])
b = " ".join(str(x) for x in data_list)
l = np.hstack([label[i], b])
writer.writerow(l)


• 点赞
• 评论 9
• 分享
x

海报分享

扫一扫，分享海报

• 收藏 3
• 手机看

分享到微信朋友圈

x

扫一扫，手机阅读

• 打赏

打赏

a5pansq

你的鼓励将是我创作的最大动力

C币 余额
2C币 4C币 6C币 10C币 20C币 50C币
• 一键三连

点赞Mark关注该博主, 随时了解TA的最新博文
04-21

04-16 1万+
07-04 3万+
09-26