오늘은 이미지에 그림을 그려넣는 방법을 공부해보겠다. 영상인식을 할 때 특정 부분을 인식하는 방법이므로 중요한 시작이 될 것 같다.
Draw geometric shapes on images using Python OpenCV
저번시간에 학습한 코드를 가져와보면,
import cv2
img= cv2.imread('lena.jpg', 0)
img = cv2.line(img, (0,0), (255,255), (0,0,255), 5)
cv2.imshow('image', img)
새로운 함수 line이 등장하였다.
line 함수는 다섯가지 파라미터를 받는데, 그 파라미터를 순서대로 설명하자면
첫번째- 선을 그리고 싶은 이미지
두번째 - 선이 시작되는 좌표
세번째 - 선이 끝나는 좌표
네번쨰- 선의 색상 (BGR - blue green red 색상)
다섯번째 - 선의 굵기
위의 코드를 실행하면 흑백 이미지로 나오는데 이는 img = cv.imread('lena.jpg', 0) 에서 두번째 파라미터 값으로 grayscale, 즉 흑백에 해당하는 0을 입력했기 때문. 다시 1로 바꿔서 실행하면 다음과 같은 이미지가 나온다.
위의 다섯가지 파라미터를 다양하게 바꿔보면 다른 결과값이 나오게 된다
이제 다른 함수를 알아보자
arrowedLine 함수가 있는데 line 함수와 파라미터는 동일하고 화살표 모양이 생길 뿐이다
rectangle 함수를 통해서 직사각형을 그릴 수도 있다. 마찬가지로 파라미터는 동일하고 직사각형을 그린다.
여기서 다섯번째 파라미터인 rectangle thickness 값으로 -1을 전달하면 어떻게 될까
직사각형 전체가 빨간색으로 채워지는 것을 볼 수 있다.
circle 함수를 통해서는 원을 그릴 수 있는데 파라미터 값으로는
첫번째- 원을 그리고 싶은 이미지
두번째 - 원의 중심 좌표
세번째 - 원의 반지름
네번쨰- 원의 색상 (BGR)
다섯번째 - 원의 굵기
이 전달된다.
이제 이미지에 글자를 새겨넣는 함수를 알아보자 putText 라는 함수이다
함수의 파라미터는 다음과 같다
첫번째 - 글자를 새겨넣고 싶은 이미지
두번째 - 새겨넣고 싶은 텍스트
세번째 - 텍스트의 시작 좌표
네번째 - 폰트
다섯번째 - 폰트 사이즈
여섯번째 - 폰트 색상
일곱번째 - 폰트 두께
여덟번째 - 라인 타입
네번째 파라미터로 넘겨주는 폰트를 위해서 미리 폰트를 지정해야 한다.
cv2에 내장된 FONT_HERSHEY_SIMPLEX 라는 폰트로 지정한다.
넘파이 zeros 함수로 이미지를 만드는 방법
imread 함수로 이미지를 만들 수도 있지만 np.zeros 함수로도 이미지를 만들 수 있다.
이 함수로 검정색 이미지를 만들기 위해서 넘겨주어야 하는 파라미터 몇가지가 있다.
첫번째 - height
두번째 - width
세번째 - 3
네번째 - 데이터 타입. 여기서는 uint8
다양한 기하학적 모양을 그리는 방법을 알아보았다. 이외에도 사용할 수 있는 다양한 메소드들이 있다.