Python 3.6.0+opencv 3.3.0 얼굴 검사 예시

인터넷 에는 Python+opencv 얼굴 검 측 에 관 한 예 가 많 고 대부분 소스 프로그램 이 첨부 되 어 있다.그러나 실제 사용 할 때 이런 저런 문제 에 부 딪 히 고 여기 서 흔히 볼 수 있 는 두 가지 문제 와 해결 방법 을 제시한다.
먼저 소스 코드 를 드 립 니 다:(아래)

import cv2
import numpy as np

cv2.namedWindow("test")
cap=cv2.VideoCapture(0)
success,frame=cap.read()

classifier=cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")

while success:
 success,frame=cap.read()
 size=frame.shape[:2]
 image=np.zeros(size,dtype=np.float16)
 image=cv2.cvtColor(frame,cv2.cv.CV_BGR2GRAY)
 cv2.equalizeHist(image,image)
 divisor=8
 h,w=size
 minSize=(w/divisor,h/divisor)
 faceRects=classifier.detectMultiScale(image,1.2,2,cv2.CASCADE_SCALE_IMAGE,minSize)
 if len(faceRects)> 0:
 for faceRect in faceRects:
  x,y,w,h=faceRect
  cv2.circle(frame,(x+w/2,y+h/2),min(w/2,h/2),(255,0,0))
  cv2.circle(frame,(x+w/4,y+h/4),min(w/8,h/8),(255,0,0))
  cv2.circle(frame,(x+3*w/4,y+h/4),min(w/8,h/8),(255,0,0))
  cv2.rectangle(frame,(x+3*w/4,y+3*h/4),(x+5*w/8,y+7*h/8),(255,0,0))
 cv2.imshow("test",frame)
 key=cv2.waitKey(10)
 c=chr(key&255)
 if c in ['q','Q',chr(27)]:
 break
 cv2.destroyWindow("test")

실행 후 문제 발생 1:
Traceback (most recent call last):
File “E:/facepy/m.py”, line 14, in
image=cv2.cvtColor(frame,cv2.cv.CV_BGR2GRAY)
AttributeError: module ‘cv2.cv2' has no attribute ‘cv'

해결 방법:
cv2.cv.CV_BGR2GRAY 는 Opencv 2.x 의 변수 로 Opencv 3.3 에서 인식 할 수 없 기 때문에 다음 과 같이 교체 해 야 합 니 다.
image=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
수정 이 끝 난 후에 계속 실행 합 니 다.또 문제 가 발생 했 습 니 다.
Traceback (most recent call last):
File “E:/facepy/m.py”, line 19, in
faceRects=classifier.detectMultiScale(image,1.2,2,cv2.CASCADE_SCALE_IMAGE,minSize)
TypeError: integer argument expected, got float

해결 방법:
minSize 가 detectMultiScale 함수 에 전 달 된 값 이 정수 가 아니 어서 오류 가 발생 했 습 니 다.따라서 minSize 의 값 을 정수 로 강제로 변환 해 야 합 니 다:minSize=(w/divisor,h/divisor)  또는 minSize=(int(w/divisor),int(h/divisor))
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기