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

조회 112

profile picture

익명

3월 20일

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

구체적이고 정성스러운 질문에 Up 투표를 눌러주세요.

설명이 부족한 질문에 Down 투표를 눌러주세요. 커리어리가 질문자에게 수정을 요청할게요.

답변 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#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 봇의 답변을 평가해 주세요!

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

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

또는

이미 회원이신가요?

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

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