Python에서 OpenCV를 사용한 이미지 모멘트

Manav Narula 2023년1월30일
  1. moments() 함수를 사용하여 Python에서 OpenCV를 사용하여 모멘트 계산
  2. 결론
Python에서 OpenCV를 사용한 이미지 모멘트

Python은 opencv 라이브러리를 사용하여 다양한 Computer Vision 작업을 수행합니다. 이러한 작업에는 이미지를 매우 효율적으로 읽고 처리하는 작업이 포함됩니다.

이미지에는 많은 속성이 있습니다. opencv 라이브러리는 윤곽 작업을 위한 많은 기능을 제공합니다.

윤곽선은 이미지에서 개체의 경계를 따라 곡선 및 연결된 모양에 대한 정보를 제공하는 데 도움이 됩니다. 등고선의 이러한 특징 중 하나를 모멘트라고 합니다.

이미지의 순간은 Computer Vision의 관점에서 정의됩니다. 주어진 이미지의 픽셀 강도의 가중 평균으로 설명할 수 있습니다.

이미지 모멘트를 사용하여 영역, 모양의 방향 및 중심에 대한 정보를 찾을 수 있습니다.

이 튜토리얼은 Python에서 opencv를 사용하는 이미지 순간에 대해 설명합니다.

moments() 함수를 사용하여 Python에서 OpenCV를 사용하여 모멘트 계산

파이썬에서는 opencv 라이브러리의 moments() 함수를 사용하여 이미지 순간을 사용할 수 있습니다. 이 함수를 사용하여 폴리곤의 3차까지의 모멘트를 계산하고 모멘트를 배열로 반환합니다.

주어진 배열에서 반환된 값을 사용하여 모양의 중심과 같은 속성을 계산할 수 있습니다.

이제 동일한 예를 살펴보겠습니다.

import cv2

i = cv2.imread("img6.jpg")
img_g = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
ret, img = cv2.threshold(img_g, 127, 255, 0)

M = cv2.moments(img)
X = int(M["m10"] / M["m00"])
Y = int(M["m01"] / M["m00"])

cv2.circle(i, (X, Y), 5, (255, 255, 255), -1)
cv2.imshow("Output", i)
cv2.waitKey(0)
cv2.destroyAllWindows()

출력:

Python에서 opencv를 사용하는 이미지 순간

위의 예에서 moments() 함수를 사용하여 계산된 모멘트 이미지를 사용하여 원의 중심을 찾습니다.

먼저 필요한 이미지를 읽습니다. 이미지를 필요한 색 공간으로 변환하는 cvtColor 기능을 사용하여 이미지를 회색조로 변환합니다.

그런 다음 이 이미지에 임계값 기술을 적용합니다. 이것은 노이즈를 처리하고 극단값으로 픽셀을 필터링하는 데 도움이 됩니다.

threshold() 함수를 사용하고 함수 내에서 임계값을 제공합니다. 우리의 경우 127보다 큰 모든 픽셀은 255로 변경되고 12 미만은 0으로 설정됩니다.

그런 다음 이미지 모멘트를 계산합니다. 반환된 배열의 값을 사용하여 원의 중심 위치를 찾습니다.

중심은 circle() 함수를 사용하여 원본 이미지에 표시됩니다. 이 함수는 중심 좌표에 작은 원을 만듭니다.

최종 출력이 표시되고 waitKey()destroyAllWindows() 함수를 사용하여 사용자가 출력 창을 자동으로 닫기 전에 일부 키를 누를 때까지 기다립니다.

결론

이 튜토리얼에서는 Computer Vision 분야의 이미지 모멘트와 Python의 opencv 라이브러리를 사용하여 모멘트를 계산하는 방법에 대해 설명했습니다. 이를 위해 opencv 라이브러리의 moments() 함수를 사용했습니다.

모멘트는 배열로 반환되며 모양의 방향, 면적 및 중심과 같은 세부 정보를 찾는 데 사용할 수 있습니다. 이 예에서는 원의 중심을 계산합니다.

코드가 예시되어 있고 모든 라인이 설명되어 있습니다.

작가: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn