ComputerLanguage_Program/PYTHON
[PYTHON] OpenCV 를 활용한 그래프의 y 좌표 구하기
pbj0812
2023. 9. 13. 02:06
0. 문제
- 아래와 같은 그림이 하나 주어졌을때 각 x 좌표에 대한 y 값들을 구하기
1. 실습
1) library 호출
import cv2
import numpy as np
import matplotlib.pyplot as plt
2) 이미지 가져오기
image = cv2.imread('/content/drive/MyDrive/96__코드/test2.png')
3) 이미지 크기 및 파란색 좌표 따오기
length = np.shape(image)[1] # 가로 길이
length2 = np.shape(image)[0] # 세로 길이
blue = [222, 104, 0] # 파란색 BGR(좌표 찍어서 찾음)
image2 = image.reshape(-1, 3) # 데이터를 한 줄로 만들기
indices = np.where(np.all(image2 == blue, axis=1)) # 파란색 좌표 찾기
4) index 를 이용하여 2 차원 좌표로 변형하기
x = []
y = []
for i in indices:
x.append(i % length)
y.append(length2 - (i // length))
5) 대표 x 값 구하기
X = np.linspace(min(x[0]), max(x[0]), 7) # x 좌표가 7개라 7
X = [int(num) for num in X]
print(X)
6) 구한 x 값을 이용하여 대표 y 값 구하기
- index 를 쓰면 가장 첫 값만 가져옴
Y = []
for i in X:
Y.append(y[0][list(x[0]).index(i)])
7) 데이터 확인
plt.plot(X, Y)
8) y 좌표의 최소값, 최대값 구하기
min_y = min(Y)
max_y = max(Y)
9) 최소값과 최대값의 실제값 알려주기
min_answer = 0 # 사용자 정의 필요
max_answer = 4 # 사용자 정의 필요
10) 비례식을 활용하여 실제 값 구하기
final = []
for i in Y:
final.append(((max_answer * (i - min_y) + min_answer * (max_y - i)) / (max_y - min_y)))
11) 결과 확인
- 0.0, 4.0, 0.5217391304347826, 0.0, 0.0, 0.0, 0.5990338164251208
plt.plot(final)
2. 참고
https://engineer-mole.tistory.com/236
[python/OpenCV] OpenCV를 이용해 이미지의 특정 색 추출 (RGB vs HSV)
OpenCV를 사용해서 특정 범위의 색을 추출하는 방법에 대해서 알아보고자 한다. 예를 들어 (0, 0, 100) ~ (100, 100, 225)와 같이 색 범위를 전달해, 그 내용을 바탕으로 범위 내의 화소만을 추출하고자 한
engineer-mole.tistory.com