OpenCV에는 영상 데이터 위에 선이나 도형 텍스틀 그릴 수 있는 기능이 있다.
여기서 중요한건 직선 도형 문자열을 사용할때 영상데이터 자체를 변경을 한다는 점이다.
그래서 영상데이터가 훼손이 될수있기때문에 원본데이터를 백업하고 복사본을 만들어 그 위에 그리는 것이 좋다.
그리고 컬러 도형이나 선을 그리고싶을때에는 영상자체가 컬러 영상이어야지만 동작을 한다.
위 코드를 실행하면 아래 영상이 생성되는데
위 영상에서 사용된 함수들을 설명하면
- img = np.full ( (400,400,3),255,np.uint8
400 x 400 의 RGB성분을 가진 버퍼를 생성하고 모든 RGB값이 255인 영상을 uint8 크기의 형으로 생성한다.
- 직선그리기 ( cv2.line )
영상, 시작점과 끝점 , 선 색상, 선두께 , 선 타입 , shift 등의 인자를 갖고있는데
인자 이름처럼 크게 어려울건 없지만 shift의 인자는 거의 사용하지 않기때문에 추후에 설명하려한다.
- 사각형 그리기 ( cv.rectangle )
위 Rectangle 함수는 2가지 함수로 오버라이딩 되어있는데
그림그릴 영상 , ( 사각형 두꼭지점 좌표 or 사각형 위치정보 ) , 선색상 밝기, 선 두께, 선 타입,
그리기 좌표값의 축소비율의 인자로 구성되어있다.
그리고 사각형 그리기에서는 선 두께에 -1 값을 넣어주게되면 내부가 채워진다.
- 원 그리기 ( cv.circle )
그림그릴영상 , 원의 중심좌표, 원의 반지름, 선색상 또는 밝기 , 선두께 , 선타입, shift의 인자들로 구성되어있는데 직선그리기처럼 크게 어려울 것 없이 사용할 수 있다.또한 선 두께에 -1을 입력하게되면 내부를 채울 수 있다.
* 그리고 원은 라인 타입이 중요한데 cv2.LINE_8의 타입을 사용하고 줌을 하게되면
원의 라인이 거친듯한 느낌을 받을 수 있는데 이는 cv2.LINE_AA의 타입을 사용하면 해결할 수 있다.
- 다각형 그리기 ( cv.polylines )그림을 그릴 영상 , 다각형 외곽점들의 좌표배열 ( numpy.ndarray의 리스트 ) , 폐곡선 여부, 선색상, 선두께 , 선타입 , shift 다각형 외곽점들의 좌표배열은 2차원 행렬 pts = np.arrary([[250,200],[300,200],...) 이라고 되어있다면
* polyline의 함수를 사용할때는 [pts]라는 리스트 형태로 사용해야 한다.
또한 다각형도 대각선이 들어가게된다면 라인타입을 LINE_AA로 사용하는게 좋다.
- 문자열 출력 ( cv.putText그림을 그릴 여상 , 출력할 문자열 , 영상에서 문자열을 출력할 위치의 좌측 하단 좌표, 폰트종류 , 폰트 크기, 선색상 , 선 두께 , 선 타입 , bottomLeftOrigin ( True면 영사의 좌측 하단을 원점으로 간주 )문자열은 한글은 지원하지 않고 영어와 숫자만 지원한다.
그리고 문자열은
또한 문자열도 라인 타입은 LINE_AA 로 사용하는 것이 좋다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'Program > OPEN_CV' 카테고리의 다른 글
[Open CV] OpenCV-Python 기초 사용법 _ 카메라와 동영상 처리하기2 (0) | 2022.04.30 |
---|---|
[Open CV] OpenCV-Python 기초 사용법 _ 카메라와 동영상 처리하기1 (0) | 2022.04.29 |
[Open CV] OpenCV-Python 기초 사용법 _ 마스크 연산과 ROI (0) | 2022.04.27 |
[Open CV] OpenCV-Python 기초 사용법 _ 영상의 생성, 복사, 부분 영상 추출 (0) | 2022.04.26 |
[Open CV] OpenCV-Python 기초 사용법 _ 영상의 속성과 픽셀 값 참조 (0) | 2022.04.25 |