在ubuntu部署简易人脸识别系统(python)

部署环境:

安装vscode:

参考:023集成开发环境_VScode下载与安装_Chapter1-ROS概述与环境搭建_哔哩哔哩_bilibili

打开ubuntu终端输入:

mkdir demo06_ws
cd demo06_ws
code .

下载功能包:

打开终端输入:

pip install opencv-contrib-python

部署文件:

在vscode创建三个文件夹,分别为训练计算机识别的图片,待预测的图片和scripts文件(用于存放python文件)

在picture文件夹放入几个人物的多张照片,然后在predict_images放入其中一个人物的照片,最后在scripts创建一个 python文件。

编写代码(含代码详细解析):

#导包
import cv2
import numpy as np 
import os

#因为机器训练图片的尺寸需要相同,而我们传入的图片可能尺寸不同,需要规范格式
resized_images=[]

#规定图片尺寸大小
target_size=(200,200)

#用于存放每个图片所对应的标签
labels = []

#待识别图片存放的绝对路径
folder_path = "/home/kirby/demo06_ws/picture"

#遍历picture文件里的每一个文件
for filename in os.listdir(folder_path):  

    #确保文件名的结尾的小写格式都以jpg结尾
    if filename.lower().endswith(('.jpg')): 

        #创建完整的图像路径。方便后续读取图像 
        image_path = os.path.join(folder_path, filename) 
        
        #读取图像,且将图像转为灰度图像 
        image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)  
        if image is not None:  
            
            #把图像转换为规定格式
            resized_image = cv2.resize(image, target_size)  

            #存储处理后的图像
            resized_images.append(resized_image)  

            #给每个图像文件贴标签
            if "mbappe" in filename.lower():  
                labels.append(0)  
            elif "ronaldo" in filename.lower():  
                labels.append(1)  
            elif "pxh" in filename.lower():  
                labels.append(2)  
            else:
                labels.append(3)


#读取预测图像,且把图像转换为灰度图像
predict_image = cv2.imread("/home/kirby/demo06_ws/predict_images/ronaldo3.jpg",cv2.IMREAD_GRAYSCALE)
if predict_image is not None:  
    predict_image = cv2.resize(predict_image, target_size)  
else:  
    print("Unable to load prediction image")  
    

#创建EigenFaces模型
recognizer = cv2.face.EigenFaceRecognizer_create()
#训练
recognizer.train(np.array(resized_images),np.array(labels))

#identify
label , confidence = recognizer.predict(predict_image)

print("label=",label)
print("confidence=",confidence)

#visualization把内容可视化
name=["mbappe","ronaldo","pxh","unkown"]
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(predict_image,name[label],(0,30),font,0.8,255,2)

#在result窗口显示predict_image图像
cv2.imshow("result",predict_image)

#等待按键指令。10000ms后自动关闭
cv2.waitKey(10000)

#关闭所有窗口
cv2.destroyAllWindows()

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值