部署环境:
安装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()