OpenCV 를 이용하여 Face alignment 를 진행하는 도중에 발생한 오류
- Github 코드
GitHub - Byeon-MJ/Computer_Vision_Project
Contribute to Byeon-MJ/Computer_Vision_Project development by creating an account on GitHub.
github.com
두 눈을 중앙점으로 두 눈 사이의 중앙점을 구해서 회전하기위해 getRotationMatrix2D 메소드를 사용하였는데 아래 에러가 발생하였다.
rotate = cv2.getRotationMatrix2D(eyes_center, degree, scale)
TypeError: Can't parse 'center'. Sequence item with index 0 has a wrong type
stackoverflow 를 찾아보니 좌표값을 int값으로 넣어주면 된다고 하는데…
OpenCV cv2.circle "can't parse 'center'" error
I tried to make a circle with cv2.circle: import cv2 cap = cv2.VideoCapture(0) while(True): ret, frame = cap.read() a = cv2.circle(frame, frame[0]/2, frame[1]/2, 30, (0,255,255)) #cv2....
stackoverflow.com
분명 중앙점을 설정할때 int로 타입을 바꿔주었고
right_eye_center = np.mean(points[RIGHT_EYE], axis = 0).astype('int')
left_eye_center = np.mean(points[LEFT_EYE], axis = 0).astype('int')
eyes_center의 Type도 확인을 했는데 int 타입이었다.
eyes_center = ((left_eye_center[0, 0] + right_eye_center[0, 0]) // 2,
(left_eye_center[0, 1] + right_eye_center[0, 1]) // 2)
print(eyes_center)
print(type(eyes_center[0]), type(eyes_center[1]))
(414, 191)
<class 'numpy.int64'> <class 'numpy.int64'>
Solution
eyes_center = (int((left_eye_center[0, 0] + right_eye_center[0, 0]) // 2),
int((left_eye_center[0, 1] + right_eye_center[0, 1]) // 2))
(414, 191)
<class 'int'> <class 'int'>
getRotationMatrix2D 메소드에 들어가는 eyes_center 변수의 값을 직접적으로 int type으로 형변환을 시켜주니까 해결되었다.
numpy.int64 는 오류가 나고 python ‘Int’ 로 들어가야만 하는가보다!!
'ML & DL > OpenCV' 카테고리의 다른 글
[OpenCV] 1. 이미지와 비디오 입출력 (0) | 2023.02.13 |
---|---|
[OpenCV] 0. CV 프로젝트 진행을 위한 OpenCV (0) | 2023.02.13 |
[OpenCV] Error : OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function 'add' (0) | 2022.12.27 |
[OpenCV] 이미지에 문자열 넣기 (0) | 2022.12.20 |
[OpenCV] BRG 이미지를 RGB 이미지로 변환하기 (0) | 2022.12.09 |
댓글