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

Python環(huán)境使用OpenCV檢測(cè)人臉實(shí)現(xiàn)教程

 更新時(shí)間:2020年10月19日 10:51:43   作者:Rodrag  
這篇文章主要介紹了Python環(huán)境使用OpenCV檢測(cè)人臉實(shí)現(xiàn)教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一、文章概述

本文將要講述的是Python環(huán)境下如何用OpenCV檢測(cè)人臉,本文的主要內(nèi)容分為:

1、檢測(cè)圖片中的人臉

2、實(shí)時(shí)檢測(cè)視頻中出現(xiàn)的人臉

3、用運(yùn)設(shè)備的攝像頭實(shí)時(shí)檢測(cè)人臉

二:準(zhǔn)備工作

提前做的準(zhǔn)備:

安裝好Python3

下載安裝OpenCV庫(kù),方法是

pip install opencv-python -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com/pypi/simple

下載特征數(shù)據(jù)HAAR和LBP,這兩種數(shù)據(jù)都能實(shí)現(xiàn)對(duì)人臉特征的提取,HAAR大多是小數(shù)計(jì)算所以運(yùn)算速度較慢,LBP大多是整數(shù)計(jì)算運(yùn)行速度較快。如圖所示,本次實(shí)例用紅框中的文本,其他的文本,比如第一個(gè)haarcascade_eye.xml是眼睛識(shí)別的文本,我們下次再用。

(1)代碼和說(shuō)明

import cv2 as cv
import numpy as np

def face_detect_demo():#人臉檢測(cè)函數(shù)
  gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)#把圖片變成灰度圖片,因?yàn)槿四樀奶卣餍枰诨叶葓D像中查找
  #以下分別是HAAR和LBP特征數(shù)據(jù),任意選擇一種即可,注意:路徑中的‘/'和‘\'是有要求的
  # 通過(guò)級(jí)聯(lián)檢測(cè)器 cv.CascadeClassifier,加載特征數(shù)據(jù)
  # face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml")
  face_detector = cv.CascadeClassifier(
    "D:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml")
  #在尺度空間對(duì)圖片進(jìn)行人臉檢測(cè),第一個(gè)參數(shù)是哪個(gè)圖片,第二個(gè)參數(shù)是向上或向下的尺度變化,是原來(lái)尺度的1.02倍,第三個(gè)參數(shù)是在相鄰的幾個(gè)人臉檢測(cè)矩形框內(nèi)出現(xiàn)就認(rèn)定成人臉,這里是在相鄰的5個(gè)人臉檢測(cè)框內(nèi)出現(xiàn),如果圖片比較模糊的話建議降低一點(diǎn)
  faces = face_detector.detectMultiScale(gray, 1.02, 5)
  for x, y, w, h in faces:#繪制結(jié)果圖
    #rectangle參數(shù)說(shuō)明,要繪制的目標(biāo)圖像,矩形的第一個(gè)頂點(diǎn),矩形對(duì)角線上的另一個(gè)頂點(diǎn),線條的顏色,線條的寬度
    cv.rectangle(src, (x, y), (x+w, y+h), (0, 0, 255), 2)
    cv.imshow("result", src)#輸出結(jié)果圖

src = cv.imread("D:/pyproject/cv_renlianjiance/cvrenxiangpic/1.jpg")#圖片是JPG和png都可以
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)#創(chuàng)建繪圖窗口
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
face_detect_demo()
cv.waitKey(0)
cv.destroyAllWindows()#作用是能正常關(guān)閉繪圖窗口

(2)結(jié)果展示

2、視頻中的人臉檢測(cè)

(1)代碼和說(shuō)明

import cv2 as cv
import numpy as np

def face_detect_demo(image):
  gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
  # face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml")
  face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml")
  faces = face_detector.detectMultiScale(gray, 1.02, 5)
  for x, y, w, h in faces:
    cv.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 2)
  cv.imshow("result", image)


capture = cv.VideoCapture("D:/pyproject/cv_renlianjiance/video/1.mp4")
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
while (True):
  #按幀讀取視頻,ret,frame是獲cap.read()方法的兩個(gè)返回值。其中ret是布爾值,如果讀取幀是正確的則返回True,如果文件讀取到結(jié)尾,它的返回值就為False。frame就是每一幀的圖像,是個(gè)三維矩陣。
  ret, frame = capture.read()
  # cv.flip函數(shù)表示圖像翻轉(zhuǎn),沿y軸翻轉(zhuǎn), 0: 沿x軸翻轉(zhuǎn), <0: x、y軸同時(shí)翻轉(zhuǎn)
  frame = cv.flip(frame, 1)
  face_detect_demo(frame)
  #waitKey()方法本身表示等待鍵盤輸入,參數(shù)是1,表示延時(shí)1ms切換到下一幀圖像,對(duì)于視頻而言;
  c = cv.waitKey(10)
  if c == 27:#當(dāng)鍵盤按下‘ESC'退出程序
    break

#cv.waitKey(0)參數(shù)為0,如cv2.waitKey(0)只顯示當(dāng)前幀圖像,相當(dāng)于視頻暫停,;
cv.waitKey(0)
cv.destroyAllWindows()#作用是能正常關(guān)閉繪圖窗口

(2)結(jié)果展示

3、利用設(shè)備上的攝像頭進(jìn)行人臉檢測(cè),其實(shí)和2中的代碼一樣,只是打開攝像頭,而不是讀取視頻文件

代碼和說(shuō)明

import cv2 as cv
import numpy as np

def face_detect_demo(image):
  gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
  # face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml")
  face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml")
  faces = face_detector.detectMultiScale(gray, 1.02, 5)
  for x, y, w, h in faces:
    cv.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 2)
  cv.imshow("result", image)


capture = cv.VideoCapture(0)#其中的0表示電腦中的第一個(gè)相機(jī)
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
while (True):
  #按幀讀取視頻,ret,frame是獲cap.read()方法的兩個(gè)返回值。其中ret是布爾值,如果讀取幀是正確的則返回True,如果文件讀取到結(jié)尾,它的返回值就為False。frame就是每一幀的圖像,是個(gè)三維矩陣。
  ret, frame = capture.read()
  # cv.flip函數(shù)表示圖像翻轉(zhuǎn),沿y軸翻轉(zhuǎn), 0: 沿x軸翻轉(zhuǎn), <0: x、y軸同時(shí)翻轉(zhuǎn)
  frame = cv.flip(frame, 1)
  face_detect_demo(frame)
  #waitKey()方法本身表示等待鍵盤輸入,參數(shù)是1,表示延時(shí)1ms切換到下一幀圖像,對(duì)于視頻而言;
  c = cv.waitKey(10)
  if c == 27:#當(dāng)鍵盤按下‘ESC'退出程序
    break

#cv.waitKey(0)參數(shù)為0,如cv2.waitKey(0)只顯示當(dāng)前幀圖像,相當(dāng)于視頻暫停,;
cv.waitKey(0)
cv.destroyAllWindows()#作用是能正常關(guān)閉繪圖窗口

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在Python的Flask框架中使用日期和時(shí)間的教程

    在Python的Flask框架中使用日期和時(shí)間的教程

    這篇文章主要介紹了在Python的Flask框架中使用日期和時(shí)間的教程,包括對(duì)各個(gè)時(shí)區(qū)之間轉(zhuǎn)換的一些處理,需要的朋友可以參考下
    2015-04-04
  • python 進(jìn)制轉(zhuǎn)換 int、bin、oct、hex的原理

    python 進(jìn)制轉(zhuǎn)換 int、bin、oct、hex的原理

    這篇文章主要介紹了python 進(jìn)制轉(zhuǎn)換 int、bin、oct、hex的原理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 在Python中執(zhí)行系統(tǒng)命令的方法示例詳解

    在Python中執(zhí)行系統(tǒng)命令的方法示例詳解

    最近在做那個(gè)測(cè)試框架的時(shí)候發(fā)現(xiàn)對(duì)python執(zhí)行系統(tǒng)命令不太熟悉,所以想著總結(jié)下,下面這篇文章主要給大家介紹了關(guān)于在Python中執(zhí)行系統(tǒng)命令的方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-09-09
  • Python中shapefile轉(zhuǎn)換geojson的示例

    Python中shapefile轉(zhuǎn)換geojson的示例

    今天小編就為大家分享一篇關(guān)于Python中shapefile轉(zhuǎn)換geojson的示例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • python+OpenCV人臉識(shí)別考勤系統(tǒng)實(shí)現(xiàn)的詳細(xì)代碼

    python+OpenCV人臉識(shí)別考勤系統(tǒng)實(shí)現(xiàn)的詳細(xì)代碼

    作為一個(gè)基于人臉識(shí)別算法的考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)教程,以下內(nèi)容將提供詳細(xì)的步驟和代碼示例。本教程將使用 Python 語(yǔ)言和 OpenCV 庫(kù)進(jìn)行實(shí)現(xiàn),需要的朋友可以參考下
    2023-05-05
  • pygame游戲之旅 添加游戲介紹

    pygame游戲之旅 添加游戲介紹

    這篇文章主要為大家詳細(xì)介紹了pygame游戲之旅,教大家如何添加游戲介紹,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • python中的下劃線多種用法總結(jié)

    python中的下劃線多種用法總結(jié)

    在 Python 中,下劃線(underscore)有多種用法,它在不同的上下文中可以扮演不同的角色,本文將介紹python中的下劃線用法總結(jié),感興趣的朋友一起看看吧
    2024-05-05
  • pytorch-RNN進(jìn)行回歸曲線預(yù)測(cè)方式

    pytorch-RNN進(jìn)行回歸曲線預(yù)測(cè)方式

    今天小編就為大家分享一篇pytorch-RNN進(jìn)行回歸曲線預(yù)測(cè)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Python采集電影評(píng)論實(shí)戰(zhàn)示例

    Python采集電影評(píng)論實(shí)戰(zhàn)示例

    這篇文章主要為大家介紹了Python采集電影評(píng)論實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 利用Python的PyPDF2庫(kù)提取pdf中的文字

    利用Python的PyPDF2庫(kù)提取pdf中的文字

    PyPDF2是一個(gè)用于處理PDF文件的Python庫(kù),它提供了許多用于讀取和操作PDF文件的功能,對(duì)于需要處理PDF文件的Python應(yīng)用程序,PyPDF2是一個(gè)非常實(shí)用的工具庫(kù),本文將給大家詳細(xì)介紹一下如何通過(guò)Python的PyPDF2庫(kù)提取pdf中的文字,需要的朋友可以參考下
    2023-05-05

最新評(píng)論