如果 所属组织列下的数据相同 就把第三列对应的人名排序 把相同的人名挨着
这个效果
如果 所属组织列下的数据相同 就把第三列对应的人名排序 把相同的人名挨着
爬取完人脸表情之后,我们需要裁剪处图像中的人脸,这里设置裁剪大小为128*128。裁剪过程需要用到opencv的人脸识别工具,即haarcascade_frontalface_alt.xml,关于该文件,可从opencv库的根目录中查找,具体查找方法可以参见我之前的文章:
深度学习(一)——deepNN模型实现摄像头实时识别人脸表情(C++和python3.6混合编程)。将该文件复制到project的根目录下,然后裁剪人脸,具体的裁剪程序为:
import os
import cv2
# 读取图像,然后将人脸识别并裁剪出来, 参考https://blog.csdn.net/wangkun1340378/article/details/72457975
def clip_image(input_dir, floder, output_dir):
images = os.listdir(input_dir + floder)
for imagename in images:
imagepath = os.path.join(input_dir + floder, imagename)
img = cv2.imread(imagepath)
path = "haarcascade_frontalface_alt.xml"
hc = cv2.CascadeClassifier(path)
faces = hc.detectMultiScale(img)
i = 1
image_save_name = output_dir + floder + imagename
for face in faces:
imgROI = img[face[1]:face[1] + face[3], face[0]:face[0] + face[2]]
imgROI = cv2.resize(imgROI, (128, 128), interpolation=cv2.INTER_AREA)
cv2.imwrite(image_save_name, imgROI)
i = i + 1
print("the {}th image has been processed".format(i))
def main():
input_dir = "data/"
floder = "chijing/"
output_dir = "output/"
if not os.path.exists(output_dir + floder):
os.makedirs(output_dir + floder)
clip_image(input_dir, floder, output_dir)
if __name__ == '__main__':
main()
如果要将该方法用于其余9种表情,只需自己修改main函数中的相关路径即可。这样裁剪之后的影像中,难免混有一些非人脸图像,只需手动删除即可。这样处理之后的效果为: