【发布时间】:2020-01-16 22:20:18
【问题描述】:
我想创建一个类似于 fer2013 的情绪识别数据集。但是,我找不到任何关于它的教程。
到目前为止,我尝试过这个。 首先,我用notepad++打开了fer2013数据集,看了看。 它有这样的东西。 情感,像素,用法 0,70 80 82 72 58 58 48 ... 106 109 82,培训
现在,我使用了 opencv 并做到了这一点。
import cv2
import numpy as np
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades +
'haarcascade_frontalface_default.xml')
img = cv2.imread('self-download.jpg')
grayscale = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(grayscale, 1.3, 5)
for (x,y,w,h) in faces:
cv2.rectangle(grayscale, (x,y), (x+w,y+h), (0, 0, 255), 2)
roi_gray = grayscale[y:y+h, x:x+w]
cv2.imshow('output', roi_gray)
arr = np.array(roi_gray)
np.savetxt('grayscale', arr)
cv2.waitKey(0)
cv2.destroyAllWindows()
我给了我一大堆像素,通过比较我可以看出这不是正确的过程。
【问题讨论】:
-
您只保存最后一张面孔,您应该为所有面孔创建列表并添加其他信息。并将所有面调整为相同大小。
fer2013的所有图像都是 48x48。 -
您应该重塑数组以创建扁平数组
arr = arr.flatten()或arr = arr.reshape(arr.size),然后在文件中的一行中获取所有像素。 -
在
savetxt('grayscale', arr, frm="%i")中使用frm="%i",您可以像在fer2013中一样将像素保存为整数值