import os import cv2 #import sys #from PIL import Image import numpy as np def getImageAndLabels(path): facesSamples=[] ids=[] imagePaths=[] for f in os.listdir(): result=os.path.join(path,f) imagePaths.append(result) face_detector=cv2.CascadeClassifier(r'D:\pyh\envs\OpenCV\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml') for imagePath in imagePaths: #读取列表imgesPath的每一张图片 img =cv2.imread(imagePath) #将读取的图片灰度化处理 PIL_img=cv2.cvtColor(img,cv2.COL0R_BGR2GRAY) #将图像转换为数组 img_numpy=np.array(PIL_img) #检测人脸并返回人脸信息 faces=face_detector.detectMultiScale(img_numpy) #获取每张图片的id os. path. split方法将路径和名称切割开 id=int(os.path.split(imagePath)[1].split('.')[0]) print(os.path.split(imagePath)) #遍历人脸信息获取x轴坐标y轴坐标w宽度h高度 for x,y,w,h in faces: #获取人脸部分数据在转换后数组内的值,将其存放到图片数据列 facesSamples.append(img_numpy[y:y+h,x:x+w]) #再将id加到对应图片数据的列表ids中 ids.append(id) #输出所有图片的id #print(ids) #返回图片数据列表以及对应id列表 return facesSamples,ids if __name__=='__main__': #图片路径 path='.data/' #获取图像数组和id标签数组 faces,ids=getImageAndLabels(path) recognizer=cv2.face.LBPHFaceRecognizer_create() recognizer.train(faces,np.array(ids)) recognizer.write('trainer/trainer.yml')帮我改正错误
时间: 2024-02-28 19:52:09 浏览: 94
在代码中,有几个错误需要进行改正:
1. `import os import cv2` 这行代码应该改为 `import os, cv2`,两个模块需要用逗号隔开。
2. `for f in os.listdir():` 这行代码中缺少参数,应该改为 `for f in os.listdir(path):`,需要传入要遍历的目录路径。
3. `PIL_img=cv2.cvtColor(img,cv2.COL0R_BGR2GRAY)` 这行代码中 `COL0R_BGR2GRAY`应该改为 `COLOR_BGR2GRAY`,拼写错误。
4. `print(os.path.split(imagePath))` 这行代码中,`split`方法应该改为`splitext`,以获取文件扩展名。
修改后的代码如下:
```
import os, cv2
import numpy as np
def getImageAndLabels(path):
facesSamples=[]
ids=[]
imagePaths=[]
for f in os.listdir(path):
result=os.path.join(path,f)
imagePaths.append(result)
face_detector=cv2.CascadeClassifier(r'D:\pyh\envs\OpenCV\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')
for imagePath in imagePaths:
img =cv2.imread(imagePath)
PIL_img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
img_numpy=np.array(PIL_img)
faces=face_detector.detectMultiScale(img_numpy)
id=int(os.path.splitext(os.path.split(imagePath)[1])[0])
for x,y,w,h in faces:
facesSamples.append(img_numpy[y:y+h,x:x+w])
ids.append(id)
return facesSamples,ids
if __name__=='__main__':
path='.data/'
faces,ids=getImageAndLabels(path)
recognizer=cv2.face.LBPHFaceRecognizer_create()
recognizer.train(faces,np.array(ids))
recognizer.write('trainer/trainer.yml')
```
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)