OpenCV (마스크연산과 그리기)
OpenCV(Open Source Computer Vision) 은 실시간 컴퓨터 비전을 목적으로 한 프로그래밍 라이브러리이다. 실시간 이미지 프로세싱에 중점을 두고 개발되었으며 Torch/PyTorch 및 Caffe의 딥러닝 프레임워크에서 작동 가능하다.
딥러닝에서는 이미지를 분류하거나 특정 객체를 찾아내야 하는 문제가 있다면, 위의 사진 처럼 OpenCV를 활용하여 특정 패턴의 이미지를 찾거나 특정 객체를 인식하는 일을 할 수 있다.
마스크연산과 ROI 작업
ROI
- Region of Interest의 약자로 관심영역을 뜻한다.
- 영상에서 특정 부분만 연산을 수행하고자 할 때, 임의의 부분을 ROI를 지정해주어 사용할 수 있다.
마스크 연산
-
OpenCV는 일부 함수에 대해 ROI 연산을 지원하며, 마스크 영상을 인자로 함께 전달해주어야 한다.
- ex: cv2.copyTo(), cv2.calcHist(), cv2.bitwise_or(), cv2.matchTemplate(), etc -
마스크 영상은 cv2.CV_8UC1타입 (그레이스케일 영상)
-
마스크 영상의 픽셀 값이 0이 아닌 위치에서만 연산이 수행된다.
copyTo()함수를 사용하면 아래의 작업을 수행할 수 있다.
그리기
OpenCV를 활용하여 영상 혹은 이미지에 직선, 사각형, 원, 다각형, 문자열을 그릴 수 있다.
그리는 방법은 아래 참조!
직선:
cv2.line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None) ->img
- img: 그림을 그릴 대상/영상
- pt1, pt2: 직선의 시작점과 끝점. (x,y)튜플 형식
- color: 선 색상 또는 밝기 (B, G, R)튜플 또는 정수값
- thickness: 선 두께. 기본값은 1
- lineType: 선 타입 .cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택
- shift: 그리기 좌표 값의 축소 비율. default = 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 중 선택
- shift: 그리기 좌표 값의 축소 비율. default = 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 중 선택
- shift: 그리기 좌표 값의 축소 비율. default = 0
다각형:
cv2.polylines(img, pts, isClosed, color, thickness=None, lineType=None, shift=None) -> img
- img: 그림을 그릴 영상
- pts: 다각형 외곽 점들의 좌표 배열. numpy.ndarray의 리스트
- isClosed: 폐곡선 여부. True 또는 False 지정
- color: 선 색상 또는 밝기 (B,G,R)튜플 또는 정수값
- thickness: 선 두께. 기본값은 1 (-1을 지정하면 내부를 채워줌)
- lineType: 선 타입. cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택
- shift: 그리기 좌표 값의 축소 비율. default = 0
문자열:
cv2.putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None) -> img
- img: 그림을 그릴 영상
- text: 출력할 문자열
- org: 영상에서 문자열을 출력할 위치의 좌측 하단 좌표. (x, y)튜플
- fontFace: 폰트 종류. cv2.FONTHERSHEY 로 시작하는 상수 중 선택
- fontScale: 폰트 크기 확대/축소 비율
- color: 선 색상 또는 밝기 (B,G,R)튜플 또는 정수값
- thickness: 선 두께. 기본값은 1 (-1을 지정하면 내부를 채워줌)
- lineType: 선 타입. cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택
- shift: 그리기 좌표 값의 축소 비율. default = 0
Author And Source
이 문제에 관하여(OpenCV (마스크연산과 그리기)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sdubee10/OpenCV저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)