opencv 人脸识别_人工智能-OpenCV+Python实现人脸识别(视频人脸检测)
上期文章我們分享了opencv識別圖片中的人臉,OpenCV圖片人臉檢測,本期我們分享一下如何從視頻中檢測到人臉
視頻人臉檢測
OpenCV打開攝像頭特別簡單,只需要如下一句代碼
capture = cv2.VideoCapture(0) # 打開攝像頭
打開攝像頭后,我們使用如下一句代碼,來獲取視頻中的圖片(每幀圖片)
ret, frame = capture.read() # 讀取
有了圖片我們就可以按照圖片的識別方式來檢測人臉了
有了以上的2句代碼,再加上上期的圖片識別,就可以從視頻中檢測人臉了
完整代碼:
import cv2
capture = cv2.VideoCapture(0) # 打開攝像頭
face = cv2.CascadeClassifier(r'D:Program Files (x86)Anaconda3pkgslibopencv-3.4.1-h875b8b8_3Libraryetchaarcascadeshaarcascade_frontalface_alt.xml') # 導入人臉模型
cv2.namedWindow('攝像頭') # 獲取攝像頭畫面
while True:
ret, frame = capture.read() # 讀取視頻圖片
gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY) # 灰度
faces = face.detectMultiScale(gray,1.1,3,0,(100,100))
for (x, y, w, h) in faces: # 5個參數,一個參數圖片 ,2 坐標原點,3 識別大小,4,顏色5,線寬
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.imshow('攝像頭', frame) # 顯示
if cv2.waitKey(5) & 0xFF == ord('q'):
break
capture.release() # 釋放資源
cv2.destroyAllWindows() # 關閉窗口
opencv中人臉檢測使用的是 detectMultiScale函數,小編使用手機播放一段視頻,截取了幾張人臉檢測的圖片
detectMultiScale(
const Mat& image,
CV_OUT vector& objects,
double scaleFactor = 1.1,
int minNeighbors = 3,
int flags = 0,
Size minSize = Size(),
Size maxSize = Size()
);
識別視頻中的人臉
函數介紹:
參數1:image--待檢測圖片,一般為灰度圖像加快檢測速度;
參數2:objects--被檢測物體的矩形框向量組;
參數3:scaleFactor--表示在前后兩次相繼的掃描中,搜索窗口的比例系數。默認為1.1即每次搜索窗口依次擴大10%;
參數4:minNeighbors--表示構成檢測目標的相鄰矩形的最小個數(默認為3個)。
如果組成檢測目標的小矩形的個數和小于 min_neighbors - 1 都會被排除。
如果min_neighbors 為 0, 則函數不做任何操作就返回所有的被檢候選矩形框,
這種設定值一般用在用戶自定義對檢測結果的組合程序上;
參數5:flags--要么使用默認值,要么使用CV_HAAR_DO_CANNY_PRUNING,如果設置為
CV_HAAR_DO_CANNY_PRUNING,那么函數將會使用Canny邊緣檢測來排除邊緣過多或過少的區域,
因此這些區域通常不會是人臉所在區域;
參數6、7:minSize和maxSize用來限制得到的目標區域的范圍。
識別視頻中的人臉
OpenCV作為對象檢測的第三方庫,其強大之處在于對象的檢測,Dlib出現后,由于在人臉檢測方面的準確度,得到了大家了認可,下期我們分享一下,如何使用Dlib來進行人臉的檢測
使用dlib檢測的68個特征點
總結
以上是生活随笔為你收集整理的opencv 人脸识别_人工智能-OpenCV+Python实现人脸识别(视频人脸检测)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python策略模式_设计模式(pyth
- 下一篇: python requests text