本篇測評由優(yōu)秀測評者“eefocus_3914144”提供。
本文將介紹基于米爾電子MYD-LMX93開發(fā)板(米爾基于NXP i.MX93開發(fā)板)的基于OpenCV的人臉檢測方案測試。 OpenCV提供了一個(gè)非常簡單的接口,用于相機(jī)捕捉一個(gè)視頻(我用的電腦內(nèi)置攝像頭)
1、安裝python3-opencv - apt install python3-opencv
復(fù)制代碼
2、查看攝像頭支持的格式與分辨率 - root@debian:~# v4l2-ctl --device=/dev/video0 --list-formats-ext
復(fù)制代碼
經(jīng)測試,只能支持640*480 為此建立opencv_test.py - import cv2
- video = cv2.VideoCapture(0)
復(fù)制代碼
設(shè)置相機(jī)參數(shù)video .set(cv2.CAP_PROP_FRAME_WIDTH, 1280) video .set(cv2.CAP_PROP_FRAME_HEIGHT, 720) - while True:
- ret, frame = video.read()
- cv2.imshow("A video", frame)
- c = cv2.waitKey(1)
- if c == 27:
- breakvideo.release()cv2.destroyAllWindows()
復(fù)制代碼
保存后執(zhí)行”python3 opencv_test.py OpenCV裝好后,可以為后面的人臉檢測提供可行性。 要實(shí)現(xiàn)人臉識別功能,首先要進(jìn)行人臉檢測,判斷出圖片中人臉的位置,才能進(jìn)行下一步的操作。 OpenCV人臉檢測方法 在OpenCV中主要使用了兩種特征(即兩種方法)進(jìn)行人臉檢測,Haar特征和LBP特征。用得最多的是Haar特征人臉檢測,此外OpenCV中還集成了深度學(xué)習(xí)方法來實(shí)現(xiàn)人臉檢測。
【參考資料】
使用OpenCV工具包成功實(shí)現(xiàn)人臉檢測與人臉識別,包括傳統(tǒng)視覺和深度學(xué)習(xí)方法(附完整代碼,模型下載......)_opencv人臉識別-CSDN博客 【Haar級聯(lián)檢測器預(yù)訓(xùn)練模型下載】
opencv/opencv: Open Source Computer Vision Library (github.com)
下載好的,在opencv-4.xdatahaarcascades文件夾下有模型,把他上傳到開發(fā)板。
【獲取檢測人臉的圖片】
我在百度上找到了**的圖片,并把它也上傳到開發(fā)板。 【編寫檢測代碼】 - import numpy as np
- import cv2 as cv
- if __name__ == '__main__':
- # (6) 使用 Haar 級聯(lián)分類器 預(yù)訓(xùn)練模型 檢測人臉
- # 讀取待檢測的圖片
- img = cv.imread("yanmi.jpg")
- print(img.shape)
-
- # 加載 Haar 級聯(lián)分類器 預(yù)訓(xùn)練模型
- model_path = "haarcascade_frontalface_alt2.xml"
- face_detector = cv.CascadeClassifier(model_path) #
- # 使用級聯(lián)分類器檢測人臉
- faces = face_detector.detectMultiScale(img, scaleFactor=1.1, minNeighbors=1,
- minSize=(30, 30), maxSize=(300, 300))
- print(faces.shape) # (17, 4)
- print(faces[0]) # (x, y, width, height)
-
- # 繪制人臉檢測框
- for x, y, width, height in faces:
- cv.rectangle(img, (x, y), (x + width, y + height), (0, 0, 255), 2, cv.LINE_8, 0)
- # 顯示圖片
- cv.imshow("faces", img)
- cv.waitKey(0)
- cv.destroyAllWindows()
復(fù)制代碼
【實(shí)驗(yàn)效果】
運(yùn)行程序后,可以正確地識別,效果如下:
|