最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、文章概述

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

1、檢測圖片中的人臉

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

3、用運設備的攝像頭實時檢測人臉

二:準備工作

提前做的準備:

安裝好Python3

下載安裝OpenCV庫,方法是

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

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

(1)代碼和說明

import cv2 as cv
import numpy as np

def face_detect_demo():#人臉檢測函數(shù)
  gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)#把圖片變成灰度圖片,因為人臉的特征需要在灰度圖像中查找
  #以下分別是HAAR和LBP特征數(shù)據(jù),任意選擇一種即可,注意:路徑中的‘/'和‘\'是有要求的
  # 通過級聯(lián)檢測器 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")
  #在尺度空間對圖片進行人臉檢測,第一個參數(shù)是哪個圖片,第二個參數(shù)是向上或向下的尺度變化,是原來尺度的1.02倍,第三個參數(shù)是在相鄰的幾個人臉檢測矩形框內出現(xiàn)就認定成人臉,這里是在相鄰的5個人臉檢測框內出現(xiàn),如果圖片比較模糊的話建議降低一點
  faces = face_detector.detectMultiScale(gray, 1.02, 5)
  for x, y, w, h in faces:#繪制結果圖
    #rectangle參數(shù)說明,要繪制的目標圖像,矩形的第一個頂點,矩形對角線上的另一個頂點,線條的顏色,線條的寬度
    cv.rectangle(src, (x, y), (x+w, y+h), (0, 0, 255), 2)
    cv.imshow("result", src)#輸出結果圖

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()#作用是能正常關閉繪圖窗口

(2)結果展示

2、視頻中的人臉檢測

(1)代碼和說明

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()方法的兩個返回值。其中ret是布爾值,如果讀取幀是正確的則返回True,如果文件讀取到結尾,它的返回值就為False。frame就是每一幀的圖像,是個三維矩陣。
  ret, frame = capture.read()
  # cv.flip函數(shù)表示圖像翻轉,沿y軸翻轉, 0: 沿x軸翻轉, <0: x、y軸同時翻轉
  frame = cv.flip(frame, 1)
  face_detect_demo(frame)
  #waitKey()方法本身表示等待鍵盤輸入,參數(shù)是1,表示延時1ms切換到下一幀圖像,對于視頻而言;
  c = cv.waitKey(10)
  if c == 27:#當鍵盤按下‘ESC'退出程序
    break

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

(2)結果展示

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

代碼和說明

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論

金塔县| 宝坻区| 益阳市| 新安县| 夹江县| 明光市| 册亨县| 怀来县| 内黄县| 洱源县| 黎川县| 吴堡县| 徐汇区| 永定县| 防城港市| 伊川县| 兴城市| 陵川县| 淅川县| 九龙坡区| 五峰| 宜宾市| 张家川| 浙江省| 思茅市| 溆浦县| 本溪市| 昆明市| 驻马店市| 清原| 永安市| 永宁县| 铜山县| 通海县| 莱阳市| 阳城县| 西安市| 天台县| 盐山县| 镇安县| 二手房|