python找人,PythonOpenCV:查找未知人物
我有一個代碼可以識別數據集中的一些人臉,它使用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'}即使是已知或未知的人也能看到相機。在
總結
以上是生活随笔為你收集整理的python找人,PythonOpenCV:查找未知人物的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 执行命令屏幕输出捕捉,在php执
- 下一篇: php正则引用不能计算,php正则表达式