激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 手把手教你利用opencv實現人臉識別功能(附源碼+文檔)

手把手教你利用opencv實現人臉識別功能(附源碼+文檔)

2022-01-01 00:29川川菜鳥 Python

最近搞一個人臉識別的項目練練手,不得不感嘆opencv做人臉檢測實在是強,這篇文章主要給大家介紹了關于利用opencv實現人臉識別功能的相關資料,并附上了源碼以及文檔,需要的朋友可以參考下

一、環境

pip install opencv-python

python3.9

pycharm2020

人狠話不多,直接上代碼,注釋在代碼里面,不說廢話。

 

二、使用Haar級聯進行人臉檢測

測試案例:

手把手教你利用opencv實現人臉識別功能(附源碼+文檔)

代碼:(記得自己到下載地址下載對應的xml)

# coding=gbk
"""
作者:川川
@時間  : 2021/9/5 16:38
https://github.com/opencv/opencv/tree/master/data/haarcascades
"""
import cv2

# 待檢測的圖片路徑
imagepath="2.jpg"

image = cv2.imread(imagepath)#讀取圖片
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)#圖像轉換為灰度圖:

face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_default.xml')#加載使用人臉識別器

faces = face_cascade.detectMultiScale(gray)#檢測圖像中的所有面孔

#為每個人臉繪制一個藍色矩形
for x, y, width, height in faces:
	# 這里的color是 藍 黃 紅,與rgb相反,thickness設置寬度
  cv2.rectangle(image, (x, y), (x + width, y + height), color=(255, 0, 0), thickness=2)

# 最后,讓我們保存新圖像
cv2.imwrite("beauty_detected.jpg", image)

效果:

手把手教你利用opencv實現人臉識別功能(附源碼+文檔)

效果可以看出這個效果并不是很好。

 

三、Haar級聯結合攝像頭

代碼:(還是用的前面得xml)

# coding=gbk
"""
攝像頭人臉識別
作者:川川
@時間  : 2021/9/5 17:15
Haar級聯結合攝像頭
"""
import cv2

#創建新的cam對象
cap = cv2.VideoCapture(0,cv2.CAP_DSHOW)
#初始化人臉識別器(默認的人臉haar級聯)
face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_default.xml')

while True:
  # 從攝像頭讀取圖像
  _, image = cap.read()
  # 轉換為灰度
  image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  # 檢測圖像中的所有人臉
  faces = face_cascade.detectMultiScale(image_gray, 1.3, 5)
  # 為每個人臉繪制一個藍色矩形
  for x, y, width, height in faces:
      cv2.rectangle(image, (x, y), (x + width, y + height), color=(255, 0, 0), thickness=2)
  cv2.imshow("image", image)
  if cv2.waitKey(1) == ord("q"):
      break

cap.release()
cv2.destroyAllWindows()

效果:

手把手教你利用opencv實現人臉識別功能(附源碼+文檔)

 

四、使用SSD的人臉檢測

代碼:

# coding=gbk
"""
圖片人臉識別
作者:川川
@時間  : 2021/9/5 17:22
"""
import cv2
import numpy as np
# 下載鏈接:https://raw.githubusercontent.com/opencv/opencv/master/samples/dnn/face_detector/deploy.prototxt
prototxt_path = r"./deploy.prototxt.txt"
# 下載鏈接:https://raw.githubusercontent.com/opencv/opencv_3rdparty/dnn_samples_face_detector_20180205_fp16/res10_300x300_ssd_iter_140000_fp16.caffemodel
model_path =r"./res10_300x300_ssd_iter_140000_fp16.caffemodel"
model = cv2.dnn.readNetFromCaffe(prototxt_path, model_path)
image = cv2.imread("2.jpg")
h, w = image.shape[:2]
blob = cv2.dnn.blobFromImage(image, 1.0, (300, 300),(104.0, 177.0, 123.0))
model.setInput(blob)
output = np.squeeze(model.forward())
font_scale = 1.0
for i in range(0, output.shape[0]):
  confidence = output[i, 2]
  if confidence > 0.5:
      box = output[i, 3:7] * np.array([w, h, w, h])
      start_x, start_y, end_x, end_y = box.astype(np.int)
      cv2.rectangle(image, (start_x, start_y), (end_x, end_y), color=(255, 0, 0), thickness=2)
      cv2.putText(image, f"{confidence*100:.2f}%", (start_x, start_y-5), cv2.FONT_HERSHEY_SIMPLEX, font_scale, (255, 0, 0), 2)
cv2.imshow("image", image)
cv2.waitKey(0)
cv2.imwrite("beauty_detected.jpg", image)

效果:

手把手教你利用opencv實現人臉識別功能(附源碼+文檔)

我們可以看到現在的識別效果非常好了。

 

五、 SSD結合攝像頭人臉檢測

代碼:

# coding=gbk
"""
作者:川川
@時間  : 2021/9/5 17:26
SSD結合攝像頭的人臉檢測
"""
import cv2
import numpy as np
prototxt_path = "deploy.prototxt.txt"
model_path = "res10_300x300_ssd_iter_140000_fp16.caffemodel"
model = cv2.dnn.readNetFromCaffe(prototxt_path, model_path)
cap = cv2.VideoCapture(0)
while True:
  _, image = cap.read()
  h, w = image.shape[:2]
  blob = cv2.dnn.blobFromImage(image, 1.0, (300, 300), (104.0, 177.0, 123.0))
  model.setInput(blob)
  output = np.squeeze(model.forward())
  font_scale = 1.0
  for i in range(0, output.shape[0]):
      confidence = output[i, 2]
      if confidence > 0.5:
          box = output[i, 3:7] * np.array([w, h, w, h])
          start_x, start_y, end_x, end_y = box.astype(np.int)
          cv2.rectangle(image, (start_x, start_y), (end_x, end_y), color=(255, 0, 0), thickness=2)
          cv2.putText(image, f"{confidence*100:.2f}%", (start_x, start_y-5), cv2.FONT_HERSHEY_SIMPLEX, font_scale, (255, 0, 0), 2)
  cv2.imshow("image", image)
  if cv2.waitKey(1) == ord("q"):
      break
cv2.destroyAllWindows()
cap.release()

效果:

手把手教你利用opencv實現人臉識別功能(附源碼+文檔)

可以發現SSD效果特別好!

 

六、結語

如果你想更深了解這些原理,去讀一下opencv文檔吧,中文官方文檔如下:

https://woshicver.com/

在很多人調用xm會遇到一些坑,我在這里說一下,讀取xml的時候用相對路徑./這種,參考我的,建議不要路徑中出現中文,其它沒啥了。

到此這篇關于手把手教你利用opencv實現人臉識別功能的文章就介紹到這了,更多相關opencv實現人臉識別內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_46211269/article/details/120118177

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲综合无码一区二区 | 黄色网电影| 黄色影院在线看 | 日韩午夜片 | 羞羞网站在线看 | 国产成人自拍视频在线观看 | 91高清免费 | 国产毛片aaa一区二区三区视频 | 激情综合网俺也去 | 久久久久久久久久久国产精品 | 国产做爰全免费的视频黑人 | 91九色蝌蚪国产 | 亚洲午夜视频 | 黄色网址免费播放 | 亚洲精品欧美二区三区中文字幕 | 91久久久久久亚洲精品禁果 | 在线播放中文 | 海外中文字幕在线观看 | 亚洲美女网站在线观看 | 亚洲一区二区国产 | 史上最强炼体老祖动漫在线观看 | 午夜精品久久久久久久久久久久久蜜桃 | 欧美精品成人一区二区在线观看 | 欧美日韩中文字幕在线视频 | 久久线视频 | xx53xx| 噜噜色av | 国产在线精品一区二区夜色 | 日韩视频一区二区 | 午夜视频观看 | 快播av在线 | 国产精品久久久久影院老司 | 中文字幕在线网 | 2019亚洲日韩新视频 | av在线免费看网站 | 法国性xxx精品hd| 国产99视频精品免视看9 | 美女污污视频在线观看 | 黄色免费播放网站 | 亚洲av一级毛片特黄大片 | 色猫av|