Python 在异常期间生成keyrerror:';Id';

Python 在异常期间生成keyrerror:';Id';,python,numpy,opencv,Python,Numpy,Opencv,实际上,我正在尝试跟踪图像,当我单击“跟踪图像”按钮时,它会打开相机,但会提供与Id相关的异常 我已将数据保存在CSV(Excel)文件中,图像存储在文件夹中。 因为我已经训练了文件夹中存储图像的数据(YML格式)。 请帮助我删除此错误 def TrackImages(): recognizer = cv2.face_LBPHFaceRecognizer.create() recognizer.read("TrainingImageLabel\Trainner.yml")

实际上,我正在尝试跟踪图像,当我单击“跟踪图像”按钮时,它会打开相机,但会提供与Id相关的异常

我已将数据保存在CSV(Excel)文件中,图像存储在文件夹中。
因为我已经训练了文件夹中存储图像的数据(YML格式)。
请帮助我删除此错误

def TrackImages():
    recognizer = cv2.face_LBPHFaceRecognizer.create()
    recognizer.read("TrainingImageLabel\Trainner.yml")
    harcascadePath = "I:\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_default.xml"
    faceCascade = cv2.CascadeClassifier(harcascadePath);
    df = pd.read_csv("StudentDetails\studentDetails.csv",header=0,encoding = 'unicode_escape')
    cam = cv2.VideoCapture(0)
    font = cv2.FONT_HERSHEY_SIMPLEX
    col_names = ['Id','Name','Date','Time']
    attendence = pd.DataFrame(columns = col_names)
    while True:
        ret, im = cam.read()
        gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
        faces = faceCascade.detectMultiScale(gray, 1.2, 5)
        for (x,y,w,h) in faces:
            cv2.rectangle(im, (x,y), (x+w,y+h), (255,0,0),2)
            Id, conf = recognizer.predict(gray[y:y+h, x:x+w])
            if (conf <50):
                ts = time.time()
                date = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d')
                timeStamp = datetime.datetime.fromtimestamp(ts).strftime('%H:%M:%S')
                aa = df.iloc[df['Id'] == Id]['Name'].values      **Error generating line**
                tt = str(Id)+"-"+aa
                attendence.iloc[len(attendence)] = [Id,aa,date,timeStamp]

            else:
                Id = 'Unknown'
                tt = str(Id)
            if(conf>75):
                noOfFile = len(os.listdir("ImagesUnknown"))+1
                cv2.imwrite("ImagesUnknown\Image"+str(noOfFile)+".jpg", im[y:y+h,x:x+w])
            cv2.putText(im.str(tt), (x,y+h), font, 1,(255,255,255),2)  
        attendence= attendence.drop_duplicates(subset = ['Id'], keep='first')
        cv2.imshow('im',im)
        if (cv2.waitKey(1) == ord('q')):
            break
    ts = time.time()
    date = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d')
    timeStamp = datetime.datetime.fromtimestamp(ts).strftime('%H:%M:%S')
    Hour,Minute,Second = timeStamp.split(":")
    fileName = "Attendence\Attendence_" +date+"_"+ Hour+"-"+Minute+"-"+Second+".csv"
    attendence.to_csv(fileName,index=False)
    cam.release()
    cv2.destroyAllWindows()
    res = attendence
    message1.configure(text = res)```
def TrackImages():
recognizer=cv2.face\LBPHFaceRecognizer.create()
识别器.read(“TrainingImageLabel\trainer.yml”)
harcascadePath=“I:\\opencv\\build\\etc\\haarcascade\\haarcascade\u frontalface\u default.xml”
faceCascade=cv2.cascade分类器(harcascadePath);
df=pd.read\u csv(“StudentDetails\StudentDetails.csv”,头=0,编码='unicode\u escape')
cam=cv2.视频捕获(0)
font=cv2.font\u HERSHEY\u SIMPLEX
col_Name=['Id'、'Name'、'Date'、'Time']
Attentience=pd.DataFrame(列=列名称)
尽管如此:
ret,im=cam.read()
灰色=cv2.CVT颜色(im、cv2.COLOR\U BGR2GRAY)
面=面级联。检测多尺度(灰色,1.2,5)
对于面中的(x,y,w,h):
cv2.矩形(im,(x,y),(x+w,y+h),(255,0,0),2)
Id,conf=recognizer.predict(灰色[y:y+h,x:x+w])
如果(形态75):
noOfFile=len(os.listdir(“ImagesUnknown”)+1
cv2.imwrite(“ImagesUnknown\Image”+str(noOfFile)+.jpg”,im[y:y+h,x:x+w])
cv2.putText(im.str(tt),(x,y+h),字体,1,(255255),2)
Attendance=Attendance.drop_重复项(子集=['Id'],保留='first')
cv2.imshow('im',im)
如果(cv2.waitKey(1)=ord('q')):
打破
ts=时间。时间()
date=datetime.datetime.fromtimestamp(ts).strftime(“%Y-%m-%d”)
timeStamp=datetime.datetime.fromtimestamp(ts).strftime(“%H:%M:%S”)
小时、分钟、秒=时间戳。拆分(“:”)
fileName=“出席\出席”+日期+“\u”+小时+“-”+分钟+“-”+秒+“.csv”
attendence.to_csv(文件名,索引=False)
cam.release()
cv2.destroyAllWindows()
res=注意力
消息1.配置(text=res)```

您想在这里完成什么
im
属于
numpy类型。ndarray
tt
已经属于
str
类型。可能应阅读:
.putText(im,tt,
。阅读什么对象类有
str
方法?@hpaulj抱歉,你能说得更清楚一点,以便我能向你提供你所要求的正确细节。谢谢!@stovfl嘿,非常感谢你给我宝贵的时间。我可以通过你的支持解决这个问题,但现在又发生了一个错误,请帮帮我。我正在编辑我的帖子。请注意。你的编辑显著地改变了问题。你应该问一个新问题!
def TrackImages():
    recognizer = cv2.face_LBPHFaceRecognizer.create()
    recognizer.read("TrainingImageLabel\Trainner.yml")
    harcascadePath = "I:\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_default.xml"
    faceCascade = cv2.CascadeClassifier(harcascadePath);
    df = pd.read_csv("StudentDetails\studentDetails.csv",header=0,encoding = 'unicode_escape')
    cam = cv2.VideoCapture(0)
    font = cv2.FONT_HERSHEY_SIMPLEX
    col_names = ['Id','Name','Date','Time']
    attendence = pd.DataFrame(columns = col_names)
    while True:
        ret, im = cam.read()
        gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
        faces = faceCascade.detectMultiScale(gray, 1.2, 5)
        for (x,y,w,h) in faces:
            cv2.rectangle(im, (x,y), (x+w,y+h), (255,0,0),2)
            Id, conf = recognizer.predict(gray[y:y+h, x:x+w])
            if (conf <50):
                ts = time.time()
                date = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d')
                timeStamp = datetime.datetime.fromtimestamp(ts).strftime('%H:%M:%S')
                aa = df.iloc[df['Id'] == Id]['Name'].values      **Error generating line**
                tt = str(Id)+"-"+aa
                attendence.iloc[len(attendence)] = [Id,aa,date,timeStamp]

            else:
                Id = 'Unknown'
                tt = str(Id)
            if(conf>75):
                noOfFile = len(os.listdir("ImagesUnknown"))+1
                cv2.imwrite("ImagesUnknown\Image"+str(noOfFile)+".jpg", im[y:y+h,x:x+w])
            cv2.putText(im.str(tt), (x,y+h), font, 1,(255,255,255),2)  
        attendence= attendence.drop_duplicates(subset = ['Id'], keep='first')
        cv2.imshow('im',im)
        if (cv2.waitKey(1) == ord('q')):
            break
    ts = time.time()
    date = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d')
    timeStamp = datetime.datetime.fromtimestamp(ts).strftime('%H:%M:%S')
    Hour,Minute,Second = timeStamp.split(":")
    fileName = "Attendence\Attendence_" +date+"_"+ Hour+"-"+Minute+"-"+Second+".csv"
    attendence.to_csv(fileName,index=False)
    cam.release()
    cv2.destroyAllWindows()
    res = attendence
    message1.configure(text = res)```