- OpenCV 그리기 함수
•OpenCV 는 영상에 선 , 도형 , 문자열을 출력하는 그리기 함수를 제공
•선 그리기 : 직선 , 화살표 , 마커 등
•도형 그리기 : 사각형 , 원 , 타원 , 다각형 등
•문자열 출력
- 그리기 함수 사용 시 주의할 점
- 그리기 알고리즘을 이용하여 영상의 픽셀 값 자체를 변경
- 원본 영상이 필요하면 복사본을 만들어서 그리기 & 출력
- 그레이스케일 영상에는 컬러로 그리기 안 됨
- cv2.cvtColor() 함수로 BGR 컬러 영상으로 변환한 후 그리기 함수 호출
- 직선 그리기
cv2.line(img,pt1,pt2,color,thickness=None,lineType=None,shif=None) --> img
• img: 그림을 그릴 영상
• pt1, pt2: 직선의 시작점과 끝점 . (x, y) 튜플
• color: 선 색상 또는 밝기 . (B, G, R) 튜플 또는 정수값
• thickness: 선 두께: 기본값은 1.
• lineType 선 타입: cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택, 기본값은 cv2.LINE_8
• shift: 그리기 좌표 값의 축소 비율, 기본값은 0.
- 사각형 그리기
cv2.rectangle(img,pt1,pt2,color,thickness=None,lineType=None,shift=None) --> img
cv2.rectangle(img,rec,color,thickness=None,lineType=None,shift=None) --> img
• img: 그림을 그릴 영상
• pt1, pt2: 사각형의 두 꼭지점 좌표 . (x, y) 튜플
• rec: 사각형 위치 정보 . (x, y, w, h) 튜플
• color: 선 색상 또는 밝기 . (B, G, R) 튜플 또는 정수값
• thickness: 선 두께, 기본값은 1. 음수 (-1) 를 지정하면 내부를 채움
• lineType: 선 타입 . cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택,
기본값은 cv2.LINE_8
• shift: 그리기 좌표 값의 축소 비율 . 기본값은 0
- 원 그리기
cv2.circle(img,center,radius,color,thickness=None, lineType=None,shift=None) --> img
• img: 그림을 그릴 영상
• center: 원의 중심 좌표 . (x, y) 튜플
• radius: 원의 반지름
• color: 선 색상 또는 밝기 . (B, G, R) 튜플 또는 정수값
• thickness: 선 두께 . 기본값은 1. 음수 1) 를 지정하면 내부를 채움
• lineType: 선 타입 . cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택 .
기본값은 cv2.LINE_8
• shift: 그리기 좌표 값의 축소 비율, 기본값은 0
- 다각형 그리기
cv2.polylines(img,pts,isClosed,color,thickenss=None,lineType=None,shift=None) --> img
• img 그림을 그릴 영상
• pts: 다각형 외곽 점들의 좌표 배열, numpy.ndaryya의 리스트 ex) [np.array([10,10].[50,50],[10,50],dtype=np.int32)]
• isClosed: 폐곡선 여부 . True 또는 False 지정
• color: 선 색상 또는 밝기 . (B, G, R) 튜플 또는 정수값
• thickness: 선 두께 . 기본값은 1. 음수(-1) 를 지정하면 내부를 채움
• lineType: 선 타입 . cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택 .
기본값은 cv2.LINE_8
• shift: 그리기 좌표 값의 축소 비율 . 기본값은 0.
- 문자열 출력
cv2.putText(img,text,org,fontFace,fontScale,color,thickness=None,lineType=None,bottomLeftOrgin=None) --> img
• img: 그림을 그릴 영상
• text: 출력할 문자열
• org: 영상에서 문자열을 출력할 위치의 좌측 하단 좌표 . (x, y) 튜플
• fontFace: 폰트 종류 . cv2.FONT_HERSHEY_ 로 시작하는 상수 중 선택
• fontScale: 폰트 크기 확대 축소 비율
• color: 선 색상 또는 밝기 . (B, G, R) 튜플 또는 정수값
• thickness: 선 두께 . 기본값은 1. 음수 (-1) 를 지정하면 내부를 채움
• lineType: 선 타입 . cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택 .
• bottomLeftOrigin: True 이면 영상의 좌측 하단을 원점으로 간주 . 기본값은 False.
- 다양한 그리기 함수 실행 예제
import cv2
img=np.full((400,400,3),255,np.uint8)
# print(img.shape)
cv2.line(img,(50,50),(200,50),(0,0,255),5)
cv2.line(img,(50,60),(150,160),(0,0,128))
cv2.rectangle(img,(50,200,150,100),(0,255,0),2)
cv2.rectangle(img,(70,220),(180,280),(0,128,0),-1)
cv2.circle(img,(300,100),30,(255,255,0),-1,cv2.LINE_AA)
cv2.circle(img,(300,100),60,(255,0,0),3,cv2.LINE_AA) #곡선형은 linetype 을 AA로 두는게 좋음
pts=np.array([[250,200],[300,200],[350,300],[250,300]])
cv2.polylines(img,[pts],True,(255,0,255),2)
text='test' + cv2.__version__
cv2.putText(img,text,(50,350),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,0,255),1,cv2.LINE_AA)
cv2.imshow('img',img)
cv2.waitKey()
cv2.destroyAllWindows()
'Computer Vision > opencv(python)' 카테고리의 다른 글
[10] 키보드, 마우스, 트랙바 이벤트 처리하기 (0) | 2021.03.16 |
---|---|
[09] 5) 카메라와 동영상 처리하기 (0) | 2021.03.15 |
[07] 3) 마스크 연산과 ROI (0) | 2021.03.13 |
[06] 2) 영상의 생성, 복사, 부분 영상 추출 (0) | 2021.03.12 |
[05] openCV-Python 기초 사용법 1) 영상의 속성과 픽셀 값 참조 (0) | 2021.03.11 |