if len(faceRects) > 0:
for faceRect in faceRects:
x, y, w, h = faceRect
# 截取臉部影像提交給模型識別這是誰
l = len(faceRects)#(改)l是識別人臉的個數
image = frame[y: y + h, x: x + w]
cv2.putText(f, "face count", (20, 20), cv2.FONT_HERSHEY_PLAIN, 2.0, (255, 255, 255), 2, 1)#(改)顯示face count
cv2.putText(f, str(l), (230, 20), cv2.FONT_HERSHEY_PLAIN, 2.0, (255, 255, 255), 2, 1)#(改)在face cout后顯示是別人臉數
faceID = model.face_predict(image) # 回傳預測值給faceID
cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, thickness=2)
#face_id判斷(改)
for i in range(len(os.listdir('./face_data/'))):# i是face_data檔案加下每一個人臉資料的標簽
if i == faceID:
# 文字提示是誰
cv2.putText(frame,os.listdir('./face_data/')[i],
(x + 30, y + 30), # 坐標
cv2.FONT_HERSHEY_SIMPLEX, # 字體
1, # 字號
(255, 0, 255), # 顏色
2) # 字的線寬
#不等于 寫出stranger
# else :
# cv2.putText(frame, 'stranger',
# (x + 30, y + 30), # 坐標
# cv2.FONT_HERSHEY_SIMPLEX, # 字體
# 1, # 字號
# (255, 0, 0), # 顏色
# 2) # 字的線寬
# pass
cv2.imshow("login", frame)
已有訓練好的人臉資料權重檔案 這是最后人臉識別的主要程式 我遇到的問題就是 facedata檔案夾下的人臉資料可以識別 但是如果遇到陌生人來識別 就會出現識別出樣本集中人臉的情況 我的想法是如果 i值也就是facedata檔案夾下的人臉資料的標簽 等于faceID也就是人臉預測回傳值 那么就顯示該標簽對應的人名 但是如果我把else取消注釋 就會出現每一幀都會有stanger的現象 包括識別我自己成功的情況下 會在我的名字上出現stanger 這是怎么一回事 有大神指導一下嗎 如果能解決 給個聯系方式 可以選擇有償。
uj5u.com熱心網友回復:
視頻是動態的,會有運動模糊導致識別率不穩定的,加上跟蹤就好了。偶爾幾幀識別不到不影響轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/79392.html
標籤:機器視覺
下一篇:不允許使用Docker cp命令
