knn实现人脸识别python代码
时间: 2023-07-02 13:14:38 浏览: 126
下面是一个基于Python和OpenCV库的KNN实现人脸识别的代码示例:
```python
import cv2
import numpy as np
import os
# 加载数据集和标签
def load_dataset(dataset_path):
faces = []
labels = []
for dir_name, subdir_list, file_list in os.walk(dataset_path):
for file_name in file_list:
if file_name.endswith('.jpg'):
img_path = os.path.join(dir_name, file_name)
label = int(dir_name.split('/')[-1])
img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)
faces.append(img)
labels.append(label)
return faces, labels
# 训练模型
def train(faces, labels):
knn_model = cv2.face.KNearest_create()
knn_model.train(np.array(faces), cv2.ml.ROW_SAMPLE, np.array(labels))
return knn_model
# 预测人脸
def predict(knn_model, test_img):
test_img = cv2.cvtColor(test_img, cv2.COLOR_BGR2GRAY)
test_img = cv2.resize(test_img, (128, 128))
test_img = np.array(test_img).reshape(-1, 128*128).astype(np.float32)
ret, results, neighbours, dist = knn_model.findNearest(test_img, k=5)
return int(results[0][0])
# 加载数据集和标签
faces, labels = load_dataset('dataset')
# 训练模型
knn_model = train(faces, labels)
# 加载测试图像
test_img = cv2.imread('test.jpg')
# 预测人脸
predicted_label = predict(knn_model, test_img)
print('Predicted label: {}'.format(predicted_label))
```
在这个示例中,我们假设人脸图像数据集已经按照标签分好类,每个人的图像都在以其标签为名的文件夹中。`load_dataset`函数用于加载数据集和标签,`train`函数用于训练KNN模型,`predict`函数用于预测人脸。最后,我们通过加载测试图像,调用`predict`函数预测人脸,并输出预测结果。
阅读全文