欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年09月07日 15:15:18   作者:川川菜鳥  
最近搞一個人臉識別的項目練練手,不得不感嘆opencv做人臉檢測實在是強(qiáng),這篇文章主要給大家介紹了關(guān)于利用opencv實現(xiàn)人臉識別功能的相關(guān)資料,并附上了源碼以及文檔,需要的朋友可以參考下

一、環(huán)境

pip install opencv-python

python3.9

pycharm2020

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

二、使用Haar級聯(lián)進(jìn)行人臉檢測

測試案例:

代碼:(記得自己到下載地址下載對應(yīng)的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)#圖像轉(zhuǎn)換為灰度圖:

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

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

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

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

效果:

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

三、Haar級聯(lián)結(jié)合攝像頭

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

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

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

while True:
    # 從攝像頭讀取圖像
    _, image = cap.read()
    # 轉(zhuǎn)換為灰度
    image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    # 檢測圖像中的所有人臉
    faces = face_cascade.detectMultiScale(image_gray, 1.3, 5)
    # 為每個人臉繪制一個藍(lán)色矩形
    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()

效果:

四、使用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)

效果:

我們可以看到現(xiàn)在的識別效果非常好了。

五、 SSD結(jié)合攝像頭人臉檢測

代碼:

# coding=gbk
"""
作者:川川
@時間  : 2021/9/5 17:26
SSD結(jié)合攝像頭的人臉檢測
"""
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()

效果:

可以發(fā)現(xiàn)SSD效果特別好!

六、結(jié)語

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

https://woshicver.com/

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

到此這篇關(guān)于手把手教你利用opencv實現(xiàn)人臉識別功能的文章就介紹到這了,更多相關(guān)opencv實現(xiàn)人臉識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python反轉(zhuǎn)一個三位整數(shù)的多種實現(xiàn)方案

    python反轉(zhuǎn)一個三位整數(shù)的多種實現(xiàn)方案

    這篇文章主要介紹了python反轉(zhuǎn)一個三位整數(shù)的多種實現(xiàn)方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python隊列通信:rabbitMQ的使用(實例講解)

    python隊列通信:rabbitMQ的使用(實例講解)

    下面小編就為大家分享一篇python隊列通信:rabbitMQ的使用(實例講解),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • python list等分并從等分的子集中隨機(jī)選取一個數(shù)

    python list等分并從等分的子集中隨機(jī)選取一個數(shù)

    這篇文章主要介紹了python list等分并從等分的子集中隨機(jī)選取一個數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 解決python中使用PYQT時中文亂碼問題

    解決python中使用PYQT時中文亂碼問題

    今天小編就為大家分享一篇解決python中使用PYQT時中文亂碼問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 解決django FileFIELD的編碼問題

    解決django FileFIELD的編碼問題

    這篇文章主要介紹了解決django FileFIELD的編碼問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • python語言基本語句用法總結(jié)

    python語言基本語句用法總結(jié)

    在本篇文章里小編給大家整理了關(guān)于python語言基本語句的相關(guān)知識點(diǎn)以及實例代碼,需要的朋友們參考下。
    2019-06-06
  • OpenCV凸包檢測和凸缺陷學(xué)習(xí)示例

    OpenCV凸包檢測和凸缺陷學(xué)習(xí)示例

    這篇文章主要為大家介紹了OpenCV凸包檢測和凸缺陷學(xué)習(xí)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python?Pandas如何獲取和修改任意位置的值(at,iat,loc,iloc)

    Python?Pandas如何獲取和修改任意位置的值(at,iat,loc,iloc)

    在我們對數(shù)據(jù)進(jìn)行選擇之后,需要對特定的數(shù)據(jù)進(jìn)行設(shè)置更改,設(shè)置,下面這篇文章主要給大家介紹了關(guān)于Python?Pandas如何獲取和修改任意位置的值(at,iat,loc,iloc)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • Pytorch限制或增加CPU使用的核數(shù)方式

    Pytorch限制或增加CPU使用的核數(shù)方式

    這篇文章主要介紹了Pytorch限制或增加CPU使用的核數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python之如何實現(xiàn)延遲操作

    python之如何實現(xiàn)延遲操作

    這篇文章主要介紹了python之如何實現(xiàn)延遲操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評論