본문 바로가기
함수 설명/컴퓨터 비전 (OpenCV, PIL)

[OpenCV] 이미지에 다각형 그리기: cv2.polylines() 사용 및 설명

by First Adventure 2024. 9. 28.
반응형

소개

  cv2.polylines는 OpenCV에서 이미지 위에 다각형(여러 선)을 그리는 함수입니다. 여러 점을 지정하여 점들을 선으로 연결하고, 이 선들을 통해 다각형을 그릴 수 있습니다. 이 함수는 다각형뿐만 아니라, 다양한 형태의 선을 연결할 때도 유용합니다. 그릴 다각형의 색상, 두께, 폐쇄 여부 등을 조정할 수 있습니다.

 

기본 사용법

# 기본 사용법
import cv2
import numpy as np

# 빈 이미지 생성 (검은색 배경)
image = np.zeros((500, 500, 3), dtype=np.uint8)

# 다각형의 꼭짓점 좌표 정의
points = np.array([[100, 100], [200, 200], [300, 100], [400, 200]], np.int32)
points = points.reshape((-1, 1, 2))

# 이미지 위에 다각형 그리기
cv2.polylines(image, [points], isClosed=True, color=(0, 255, 0), thickness=3)

# 그린 이미지를 창에 표시
cv2.imshow('Polylines Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

# 다양한 옵션
import cv2
import numpy as np

# 빈 이미지 생성
image = np.zeros((500, 500, 3), dtype=np.uint8)

# 두 개의 다각형 정의
points1 = np.array([[50, 300], [150, 400], [250, 300]], np.int32).reshape((-1, 1, 2))
points2 = np.array([[300, 100], [400, 200], [350, 350], [250, 250]], np.int32).reshape((-1, 1, 2))

# 첫 번째 다각형 그리기 (닫힌 다각형)
cv2.polylines(image, [points1], isClosed=True, color=(255, 0, 0), thickness=5)

# 두 번째 다각형 그리기 (열린 다각형)
cv2.polylines(image, [points2], isClosed=False, color=(0, 255, 0), thickness=3)

# 이미지 출력
cv2.imshow('Multiple Polylines', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

상세 설명

  • 기본 사용법: cv2.polylines(이미지, [점 배열], isClosed, color, thickness)는 이미지 위에 주어진 점들을 연결하여 다각형을 그립니다.
  • isClosed: True로 설정하면 다각형의 시작점과 끝점이 연결되어 닫힌 다각형이 그려지고, False로 설정하면 선만 그려집니다.
  • 색상: BGR 형식으로 색상을 지정합니다. 예를 들어, (255, 0, 0)은 파란색, (0, 255, 0)은 초록색입니다.
  • 두께: 선의 두께를 픽셀 단위로 설정합니다.
  • 다각형 그리기
    • cv2.polylines는 여러 점을 연결하여 다각형을 그리는 함수입니다. 점들의 배열을 전달하면, 해당 점들을 연결하는 선을 그려줍니다.
    • 다각형을 닫거나 열린 상태로 그릴 수 있으며, 색상과 두께 등을 설정하여 다양한 스타일을 적용할 수 있습니다.
  • 활용
    • 이 함수는 객체 감지 결과를 시각화하거나 특정 영역을 강조할 때 유용하게 사용됩니다. 예를 들어, 얼굴 인식이나 경계선 추출 결과를 이미지 위에 표시할 때 활용할 수 있습니다.

예시 설명

  • 첫 번째 예시에서는 네 개의 점을 연결하여 초록색으로 닫힌 다각형을 그립니다.
  • 두 번째 예시에서는 두 개의 다각형을 그리며, 하나는 닫힌 파란색 다각형, 다른 하나는 열린 초록색 다각형입니다.

 

라이센스

  OpenCV 4.4.0 까지는 3-clause BSD license를 따르고 있으며 자유롭게 사용, 수정, 배포할 수 있으며, 상업적 목적으로도 사용할 수 있습니다.
  OpenCV 4.5.0 이상 부터는 Apache 2 License를 따르고 있습니다. 해당 라이선스는 사용, 수정, 배포, 상업적 이용을 자유롭게 허용하며, 사용자가 해당 소프트웨어의 기여자에 대한 특허 청구를 방지하도록 명시하는 것을 특징으로 합니다. 또한 수정된 코드를 배포할 때 변경 사항을 고지해야 하며, 특허 분쟁 시 관련 권리를 상실할 수 있습니다​.

 

관련 내용

  [OpenCV] 비디오 생성 및 저장하기: cv2.VideoWriter() 사용 및 설명

  [OpenCV] 카메라 및 비디오 파일에서 프레임 읽기: cv2.VideoCapture() 사용 및 설명

  [OpenCV] 이미지의 엣지를 보호하며 부드럽게: cv2.medianBlur() 사용 및 설명

  [OpenCV] 이미지 흐리게 만들기: cv2.GaussianBlur() 사용 및 설명

  [OpenCV] 이미지 색상 공간 변환: cv2.cvtColor() 사용 및 설명

  [OpenCV] 이미지 축소: cv2.pyrDown() 사용 및 설명

  [OpenCV] 이미지 확대: cv2.pyrUp() 사용 및 설명

  [OpenCV] 원 찾기: cv2.HoughCircles() 사용 및 설명

  [OpenCV] 직선 찾기: cv2.HoughLines() 사용 및 설명

  [OpenCV] 경계선 찾기: cv2.Canny() 사용 및 설명

  [OpenCV] 적응형 임계값 처리하기: cv2.adaptiveThreshold() 사용 및 설명

  [OpenCV] 이미지 임계값 처리: cv2.threshold() 사용 및 설명

  [OpenCV] 이미지의 원근 변환: cv2.warpPerspective() 사용 및 설명

  [OpenCV] 이미지 기하학적 변환: cv2.warpAffine() 사용 및 설명

  [OpenCV] 이미지 좌우, 상하 반전하기: cv2.flip() 사용 및 설명

  [OpenCV] 이미지 회전: cv2.rotate() 사용 및 설명

  [OpenCV] 이미지 크기 조절: cv2.resize() 사용 및 설명

  [OpenCV] 이미지 팽창하기: cv2.dilate() 사용 및 설명

  [OpenCV] 이미지 침식하기: cv2.erode() 사용 및 설명

  [OpenCV] 이미지 블렌딩하기: cv2.addWeighted() 사용 및 설명

  [OpenCV] 이미지 간 빼기: cv2.subtract 사용법() 사용 및 설명

  [OpenCV] 이미지 간 더하기: cv2.add() 사용 및 설명

  [OpenCV] 이미지에 다각형 그리기: cv2.polylines() 사용 및 설명

  [OpenCV] 이미지에 원 그리기: cv2.circle() 사용 및 설명

  [OpenCV] 이미지에 사각형 그리기: cv2.rectangle() 사용 및 설명

  [OpenCV] 이미지에 선 그리기: cv2.line 사용법() 사용 및 설명

  [OpenCV] 이미지에 텍스트 추가하기: cv2.putText() 사용 및 설명

  [OpenCV] 이미지 창에 표시하기: cv2.imshow() 사용 및 설명

  [OpenCV] 이미지 파일 저장하기: cv2.imwrite() 사용 및 설명

  [OpenCV] 이미지 파일 로드하기: cv2.imread() 사용 및 설명

반응형