python找人,Python&OpenCV:查找未知人物

我有一个代码可以识别数据集中的一些人脸,它使用opencv。当一个人出现在我的数据集中,当他出现在网络摄像头前,它会完美地显示他的名字。在

但当另一个人不在我的数据集中时,它也会显示相同的名字。它应该显示“未知”。这是我的密码import sys

import os

import time

from datetime import datetime

import cv2

from skimage.filters import threshold_mean

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.cm as cm

def Draw_Text(img, sTxt, aX=30, aY=30):

if ""==sTxt: return

cv2.putText(image, str(sTxt) ,(aX,aY), font,

fntSize,(0,255,255), fntThickness,cv2.LINE_AA)

def CvBGR_To_RGB(img):

return cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

def Load_LabelIDs(fn):

labelNames = []

with open(fn) as f:

data = f.readlines()

for i in range(len(data)):

lines = str(data[i]).split("\\n")

for s in lines:

labelNames.append(s)

return labelNames

labelNames = Load_LabelIDs('labelIDs.txt')

labelDics = {}

for s in labelNames:

strs = str(s).split("=")

labelDics[strs[0]] = strs[1].split("\n")[0]

font = cv2.FONT_HERSHEY_SIMPLEX

fntSize = 1

fntThickness = 1

fnClassfier = 'haarcascade_frontalface_default.xml'

faceCascade = cv2.CascadeClassifier(fnClassfier)

fname = "trainner.yml"

recognizer = cv2.face.LBPHFaceRecognizer_create()

recognizer.read(fname)

camera = cv2.VideoCapture(0)

while True:

return_value,image = camera.read()

imgInfo = np.asarray(image).shape

if len(imgInfo)<2: break

imgH=imgInfo[0]

imgW=imgInfo[1]

imgChannel=imgInfo[2]

gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

faces=faceCascade.detectMultiScale(gray, 1.3, 5)

for(x,y,w,h) in faces:

cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),3)

Id,conf = recognizer.predict(gray[y:y+h,x:x+w])

#print (conf)

key = "{}".format(Id)

if (key in labelDics):

Id = labelDics[key]

else:

Id="Unknown"

newimg = cv2.putText(image, str(Id), (x+2,y+h-5), cv2.FONT_HERSHEY_SIMPLEX, 1, (150,255,0),2)

try:

Draw_Text(image, "esc:exit")

cv2.imshow('image',image)

key = cv2.waitKey(5) & 0xFF

if key == 27: #esc ord('s'):

#cv2.imwrite('test.jpg',image)

break

except ValueError:

break

camera.release()

cv2.destroyAllWindows()

我试着编辑

^{pr2}$

但经过多次尝试,我还是找不到。你能帮助我吗?在

编辑:

我的labelIDs.txt文件文件只包含这一行1=wicaledon。所以如果我加上print(key, Id, labelDics)它总是显示1 1 {'1': 'wicaledon'}即使是已知或未知的人也能看到相机。在

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值