日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

Opencv进行人脸检测(第三版改进)

發布時間:2023/12/20 pytorch 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Opencv进行人脸检测(第三版改进) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1.先前Opencv人臉檢測
    • 2.python下的級聯分類器
    • 3.首先了解Opencv中Haar 特征的Cascade級聯分類器
    • 4.Adaboost算法
    • 5.使用圖片簡單測試一下
    • 6.使用Opencv中自帶的級聯分類器進行人臉實時檢測
    • 7.使用Opencv中自帶的級聯分類器進行人臉微笑檢測
    • 8.使用Opencv中自帶的級聯分類器進行人臉微笑實時檢測

1.先前Opencv人臉檢測

https://mydreamambitious.blog.csdn.net/article/details/123535760


2.python下的級聯分類器

https://mydreamambitious.blog.csdn.net/article/details/121458773


3.首先了解Opencv中Haar 特征的Cascade級聯分類器

使用基于 Haar 特征的級聯分類器進行對象檢測是 Paul Viola 和 Michael Jones 在其 2001 年的論文“Rapid Object Detection using a Boosted Cascade of Simple Features”中提出的一種有效的對象檢測方法。它是一種基于機器學習的方法,其中級聯函數是從大量正負圖像中訓練出來的。然后它用于檢測其他圖像中的對象。

最初,該算法需要大量的正圖像(人臉圖像)和負圖像(沒有人臉的圖像)來訓練分類器。然后我們需要從中提取特征。為此,使用了下圖中顯示的 Haar 特征。它們就像我們的卷積核。每個特征都是通過從黑色矩形下的像素總和中減去白色矩形下的像素總和而獲得的單個值


4.Adaboost算法

Adaboost是一種迭代算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然后把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。Adaboost算法本身是通過改變數據分布來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的準確率,來確定每個樣本的權值。將修改過權值的新數據集送給下層分類器進行訓練,最后將每次得到的分類器最后融合起來,作為最后的決策分類器。


5.使用圖片簡單測試一下

#Opencv人臉檢測 import os import cv2#導入人臉檢測級聯分類器,.xml包含訓練出來的人臉特征 detect_face=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')#導入圖片 #filename:需要打開圖片的路徑,可以是絕對路徑或者相對路徑,路徑中不能出現中文。 #flag:圖像的通道和色彩信息(默認值為1)。 frame=cv2.imread('images/face1.jpg',flags=1)# 使用detect_face進行人臉檢測,返回包含的內容是人臉位置的坐標,scaleFactor人臉框的放大比例,minNeighbors表示檢測的最小次數 detect = detect_face.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=15)#遍歷圖中的人臉畫框 for (x0,y0,w,h) in detect:#對人臉進行畫框frame=cv2.rectangle(frame,pt1=(x0,y0),pt2=(x0+w,y0+h),color=(255,0,0),thickness=2)#圖片,添加的文字,左上角坐標,字體,字體大小,顏色,字體粗細cv2.putText(frame,text='person',org=(x0+w//4,y0-10),fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale=1.2,color=(0,255,0),thickness=2) cv2.imshow('face',frame) cv2.destroyAllWindows()if __name__ == '__main__':print('Pycharm')


6.使用Opencv中自帶的級聯分類器進行人臉實時檢測

#Opencv人臉檢測 import os import cv2#導入人臉檢測級聯分類器 detect_face=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')#打開攝像頭 cap=cv2.VideoCapture(0)while cap.isOpened():OK,frame=cap.read()# 使用detect_face進行人臉檢測,返回包含的內容是人臉位置的坐標,scaleFactor人臉框的放大比例,minNeighbors表示檢測的最小次數detect = detect_face.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=15)#遍歷圖中的人臉畫框for (x0,y0,w,h) in detect:#對人臉進行畫框frame=cv2.rectangle(frame,pt1=(x0,y0),pt2=(x0+w,y0+h),color=(255,0,0),thickness=2)#圖片,添加的文字,左上角坐標,字體,字體大小,顏色,字體粗細cv2.putText(frame,text='person',org=(x0+w//4,y0-10),fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale=1.2,color=(0,255,0),thickness=2)if cv2.waitKey(1)&0xFF==27:breakcv2.imshow('face',frame) cap.release() cv2.destroyAllWindows()if __name__ == '__main__':print('Pycharm')

7.使用Opencv中自帶的級聯分類器進行人臉微笑檢測

#Opencv人臉檢測 import os import cv2#導入人臉檢測級聯分類器 detect_face=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')#導入人臉檢測級聯分類器 detect_smile=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_smile.xml')#導入圖片 #filename:需要打開圖片的路徑,可以是絕對路徑或者相對路徑,路徑中不能出現中文。 #flag:圖像的通道和色彩信息(默認值為1)。 frame=cv2.imread('images/smile.jpg',flags=1) #使用detect_face進行人臉檢測,返回包含的內容是人臉位置的坐標,scaleFactor人臉框的放大比例,minNeighbors表示檢測的最小次數 detect = detect_face.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=15)#遍歷圖中的人臉畫框 for (x0,y0,w,h) in detect:#對人臉進行畫框frame=cv2.rectangle(frame,pt1=(x0,y0),pt2=(x0+w,y0+h),color=(255,0,0),thickness=2)#首先將人的檢測出來之后檢測人的微笑情況frame_smile=frame[x0:x0+w,y0:y0+h]# 對人的進行檢測smile=detect_smile.detectMultiScale(frame_smile,scaleFactor=1.2,minNeighbors=15)for (sx, sy, sw, sh) in smile:# 圖片,添加的文字,左上角坐標,字體,字體大小,顏色,字體粗細cv2.putText(frame, text='smile', org=(x0 + w // 4, y0 - 10), fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale=1.2,color=(0, 255, 0), thickness=2)cv2.imshow('face',frame) cv2.waitKey(0) cv2.destroyAllWindows()if __name__ == '__main__':print('Pycharm')

8.使用Opencv中自帶的級聯分類器進行人臉微笑實時檢測

#Opencv人臉檢測 import os import cv2#導入人臉檢測級聯分類器 detect_face=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')#導入人臉檢測級聯分類器 detect_smile=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_smile.xml')#打開攝像頭 cap=cv2.VideoCapture(0)while cap.isOpened():OK,frame=cap.read()# 使用detect_face進行人臉檢測,返回包含的內容是人臉位置的坐標,scaleFactor人臉框的放大比例,minNeighbors表示檢測的最小次數detect = detect_face.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=15)#遍歷圖中的人臉畫框for (x0,y0,w,h) in detect:#對人臉進行畫框frame=cv2.rectangle(frame,pt1=(x0,y0),pt2=(x0+w,y0+h),color=(255,0,0),thickness=2)#圖片,添加的文字,左上角坐標,字體,字體大小,顏色,字體粗細cv2.putText(frame,text='person',org=(x0+w//4,y0-40),fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale=1.2,color=(0,255,0),thickness=2)#首先將人的檢測出來之后檢測人的微笑情況frame_smile=frame[x0:x0+w,y0:y0+h]# 對人的進行檢測smile=detect_smile.detectMultiScale(frame_smile,scaleFactor=1.2,minNeighbors=15)for (sx, sy, sw, sh) in smile:# 圖片,添加的文字,左上角坐標,字體,字體大小,顏色,字體粗細cv2.putText(frame, text='smile', org=(x0 + w // 4, y0 - 10), fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale=1.2,color=(0, 255, 0), thickness=2)if cv2.waitKey(1)&0xFF==27:breakcv2.imshow('face',frame) cap.release() cv2.destroyAllWindows()if __name__ == '__main__':print('Pycharm')

總結

以上是生活随笔為你收集整理的Opencv进行人脸检测(第三版改进)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。