新手入门eigenface以及python实现

本文详细介绍了如何使用Python实现Eigenface人脸识别算法,包括数据处理、平均脸计算、特征值和协方差矩阵的获取,以及权重计算和欧氏距离的求解。通过实例分析了可能出现的问题和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上的文章千篇一律
有用的代码万里挑一


毕设做人脸识别,eigenface作为人脸识别基础的算法,一定不能落下。但是我仔细找了许多文章,发现他们都是出自同一篇文章,用的字母没有标识没有注解,语言也是前后不搭,所以很难根据文章复现代码。各种找有用的文章,一周才完成这个eigenface的算法,这里不谈论深入的东西,只看实现的过程。

  1. 数据库的选取与读入。
    我选取的是Yaleface数据库,看文件的样子比较老了
    yalefaces
    我们看到文件的类型也未知,看了许多文章,他们都将这些图片认为是 . p g m .pgm .pgm的格式,我打不开这些文件,索性就把它们转换一下格式,变成 . p n g .png .png格式的,这样比较好处理。
    在这里插入图片描述
    介绍一下图库,这个图库是用15个人的不同表情光照的照片组成,每个人有11张图片,共165张图。每个人的第一张图片是正常图片。我们要对这11个人的正常脸做训练,然后取出165张图片中的任意一张进行判断是否是图库中的脸(我的判断结果很不理想,判断结果误差非常大,我的推断是图库中人脸位置不同,所以训练出的数据也有问题
def readings(img_src):
    init_images = []
    list_of_dir = os.listdir(img_src)
    count = 0
    for i in list_of_dir:
        if "png" in i and count % 11 == 0:
            absolute_path = os.path.join(img_src, i)
            img = cv2.imread(absolute_path, 2)
            init_images.append(img)
        count += 1
    return init_images
  1. 数据拉平
    注意:Yalefaces中的图像都是 243 ∗ 320 243*320 243320像素的
    所谓数据拉平,就是把二维矩阵变成一维数组的过程,这个数组不是真正的数组,而是一个类似于数组的一维矩阵。
    比如:
    [ 1 2 3 4 5 6 7 8 9 ] \begin{bmatrix}1&2&3\\4&5&6\\7&8&9\end{bmatrix} 147258369
    这样的矩阵,将它拉平,可以有两种方式,一种是横着,一种是竖着:
    [ 1 2 3 4 5 6 7 8 9 ] \begin{bmatrix}1&2&3&4&5&6&7&8&9\end{bmatrix} [12345<
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值