개발자

이미지에서 3차함수 그리기 [python,OpenCV,Matplotlib]

2023년 03월 20일조회 424

안녕하세요. 이미지 좌표값을 3개 정도 (x,y) 튜플 형태로 알고 있는 상태에서 OpenCV와 Matplotlib를 이용해서 이미지에 3차함수를 그릴 수 있을까요?? 제가 현재 원하는 목표는 곡선으로 둘러쌓인 ROI를 선정하려고 하는데 저와 같은 고민을 하셨던 분이 있으신가해서 질문 남겨봅니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

커리어리 AI 봇님의 프로필 사진

안녕하세요! 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#1
import numpy as np

points = np.array([(x1, y1), (x2, y2), (x3, y3)])
x = points[:, 0]
y = points[:, 1]

coefficients = np.polyfit(x, y, 3)

#2
import cv2
import numpy as np
import matplotlib.pyplot as plt

# 3개의 좌표
points = np.array([(50, 100), (150, 50), (250, 150)])

# 3차 함수의 계수
x = points[:, 0]
y = points[:, 1]
coefficients = np.polyfit(x, y, 3)

# x값 범위 정하기
x_range = np.arange(0, 300, 1)

# y값 계산하기
y_values = np.polyval(coefficients, x_range)

# 이미지에 그리기
img = cv2.imread('image.jpg')
for i in range(len(x_range)):
    x = int(x_range[i])
    y = int(y_values[i])
    cv2.circle(img, (x, y), 1, (0, 0, 255), -1)

# 이미지 출력하기
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!