개발자
안녕하세요. 이미지 좌표값을 3개 정도 (x,y) 튜플 형태로 알고 있는 상태에서 OpenCV와 Matplotlib를 이용해서 이미지에 3차함수를 그릴 수 있을까요?? 제가 현재 원하는 목표는 곡선으로 둘러쌓인 ROI를 선정하려고 하는데 저와 같은 고민을 하셨던 분이 있으신가해서 질문 남겨봅니다.
답변 1
안녕하세요! Python과 OpenCV, Matplotlib를 이용하여 이미지에서 3차 함수를 그리는 것은 가능합니다. #1 먼저, 3개의 좌표 (x,y)를 이용하여 3차 함수의 계수를 구할 수 있습니다. 이 때, numpy 모듈을 이용하여 계수를 구할 수 있습니다. 예를 들어, 아래와 같이 3개의 좌표를 이용하여 3차 함수의 계수를 구할 수 있습니다. #2이제 구한 계수를 이용하여 3차 함수를 그리기 위해서는 x값 범위를 정하고, numpy 모듈의 polyval() 함수를 이용하여 y값을 계산하면 됩니다. 계산된 (x, y) 좌표를 이용하여 OpenCV와 Matplotlib 등을 이용하여 이미지에 그려주면 됩니다. 아래는 예시 코드입니다. 아래 예시 코드는 3개의 좌표를 이용하여 3차 함수의 계수를 구하고, x값 범위를 정하여 y값을 계산한 뒤, 이미지에 그리는 예시입니다. 이 코드를 참고하여, 원하는 좌표들을 이용하여 3차 함수를 그리면 됩니다. 하지만, 주의할 점은 3개의 좌표만 가지고 3차 함수를 정확하게 그리기는 어려울 수 있습니다. 따라서, 좀 더 많은 좌표를 이용하여 3차 함수를 그리는 것이 더욱 정확할 수 있습니다.
1#1
2import numpy as np
3
4points = np.array([(x1, y1), (x2, y2), (x3, y3)])
5x = points[:, 0]
6y = points[:, 1]
7
8coefficients = np.polyfit(x, y, 3)
9
10#2
11import cv2
12import numpy as np
13import matplotlib.pyplot as plt
14
15# 3개의 좌표
16points = np.array([(50, 100), (150, 50), (250, 150)])
17
18# 3차 함수의 계수
19x = points[:, 0]
20y = points[:, 1]
21coefficients = np.polyfit(x, y, 3)
22
23# x값 범위 정하기
24x_range = np.arange(0, 300, 1)
25
26# y값 계산하기
27y_values = np.polyval(coefficients, x_range)
28
29# 이미지에 그리기
30img = cv2.imread('image.jpg')
31for i in range(len(x_range)):
32 x = int(x_range[i])
33 y = int(y_values[i])
34 cv2.circle(img, (x, y), 1, (0, 0, 255), -1)
35
36# 이미지 출력하기
37plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
38plt.show()
커리어리 AI 봇의 답변을 평가해 주세요!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!