OpenCV를 사용한 얼굴 감지(완전한 인형용)
종속성 설치
pypi에서
opencv-python
를 가져올 수 있습니다. 이것은 CPU에서 작동하는 최적화되지 않은 버전입니다. 프로토타이핑에 충분합니다.코드 작성
먼저 OpenCV를 가져오고 작업하려는 이미지를 로드하고 선택적으로 크기를 조정합니다. 추가 분류를 적용하기 전에 이미지를 회색조로 조정해야 합니다.
import cv2 as cv
img1 = cv.imread("band-small-faces.jpg")
# resize if needed
# img2 = cv.resize(img1, None, fx=0.3, fy=0.3, interpolation=cv.INTER_CUBIC)
img2 = img1 # not resizing in this case
img3 = cv.cvtColor(img2, cv.COLOR_BGR2GRAY)
다음은 입력으로 제공된 이미지입니다.
그런 다음 마술을 수행하는 Haar 분류기라는 것이 필요합니다.
haar_cascade_face = cv.CascadeClassifier("./data/haarcascades/haarcascade_frontalface_default.xml")
입력으로 작업할 모델이 필요합니다. 정면 얼굴을 감지하는 모델을 전달하고 있습니다. 다운로드할 수 있는 모델attached이 있습니다(분명히 Python 스크립트가 있는 폴더
data/haarcascases
를 생성해야 함).다음과 유사한 오류가 발생하는 경우
cv2.error: OpenCV(4.5.5) ...opencv-python\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'
이는 일반적으로 xml에 대한 경로가 유효하지 않음을 의미합니다(유용한 메시지에 감사드립니다!).
그리고 모델 결과를 표시하려면 다음을 수행하십시오.
for (x, y, w, h) in faces_rects:
cv.rectangle(img2, (x, y), (x + w, y + h), (0, 255, 0), 3)
cv.imshow("Display", img2)
k = cv.waitKey(0)
보시다시피 대부분의 얼굴이 감지되었습니다! 마지막 사람의 다리는 얼굴처럼 보입니다(이를 배제하려면 모델 매개변수를 가지고 놀아야 합니다). 정면이 아니기 때문에 마지막 얼굴이 감지되지 않았습니다! 더 많은 것을 감지해야 하는 경우 다른 모델을 사용할 수 있습니다.
OpenCV로 다른 것을 감지할 수 있는 것과 같은 방식으로 사전 훈련된 다른 모델을 제공하기만 하면 됩니다. 예를 들어, 얼굴 표정, 눈, 안경, 신체, 번호판 등.
Reference
이 문제에 관하여(OpenCV를 사용한 얼굴 감지(완전한 인형용)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aloneguid/face-detection-with-opencv-for-complete-dummies-19jo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)