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

좋은 웹페이지 즐겨찾기