Back

Numpy and Matplotlib

Numpy and Matplotlib

Numpy

import cv2
import numpy as np

img = np.zeros((120,240), dtype=np.uint8) # 120,240 2차원 배열 생성
img[25:35, :] = 255
img[55:65, :] = 115
img[85:95, :] = 160
img[:, 35:45] = 205
img[:, 75:85] = 255
cv2.imshow('Gray', img)
if cv2.waitKey(0) & 0xFF = 27:
		cv2.destroyAllWindows()
import cv2
import numpy as np

img = np.zeros((120,240,3), dtype=np.uint8) # 120,240 2차원 배열 생성, 3채널 컬러 이미지
img[25:35, :] = [255, 0, 0]
img[55:65, :] = [0, 255, 0]
img[85:95, :] = [0, 0, 160]
img[:, 35:45] = [205, 255, 0]
img[:, 75:85] = [255, 0, 255]
cv2.imshow('BGR', img)
if cv2.waitKey(0) & 0xFF = 27:
		cv2.destroyAllWindows()

Matplotlib

  • 데이터 시각화 라이브러리
  • 도표 혹은 차트 등 쉽게 그리기 가능

1. 그림 여러개 띄우기

OpenCV에서는 한 화면에 여러 이미지를 띄우는 용도로 많이 사용

import cv2
import matplotlib.pyplot as plt

img = cv2.imread('dog.jpg')

plt.imshow(img)  # cv2는 B,G,R 순서, plt.imshow()는 R,G,B 순서로 데이터를 읽으므로 B,G,R 순서인 cv2 데이터를 그대로 읽으면 색이 이상하게 나옴
plt.title("1")
plt.yticks([]) # y좌표 눈금 제거
plt.xticks([]) # x좌표 눈금 제거
plt.show()

plt.imshow(img[:, :, ::-1])  # 이렇게 순서를 바꿔주면 정상적으로 보인다
plt.title("2")
plt.yticks([]) # y좌표 눈금 제거
plt.xticks([]) # x좌표 눈금 제거
plt.show()

plt.imshow(img[:, :, (2,1,0)]) # 이렇게도 가능
plt.title("3")
plt.yticks([]) # y좌표 눈금 제거
plt.xticks([]) # x좌표 눈금 제거
plt.show()

plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))  # 구글 검색해보니 이렇게해도 되는듯
plt.title("4")
plt.yticks([]) # y좌표 눈금 제거
plt.xticks([]) # x좌표 눈금 제거
plt.show()

2. 그래프 그리기

image
image

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10) # 0 ~ 9
y = x ** 2        # 0, 1, 4, 9, 16, 25, 36 ...

plt.plot(x,y)
plt.show()

그래프 옵션들

# 조합 가능
plt.plot(x, 'r--') # red, -- (이음선)
plt.plot(x, 'g.') # green, ●
plt.plot(y, 'bv') # blue, ▼
plt.plot(y, 'ks') # blacK, square ■

SubPlot

구획을 나눠 한 화면에 보여줌

plt.subplot(2,2,1) # 2행 2열 중 1번째
plt.plot(x, 'r--') # red, -- (이음선)

plt.subplot(2,2,1) # 2행 2열 중 2번째
plt.plot(x, 'g.') # green, ●

plt.subplot(223) # 2행 2열 중 3번째
plt.plot(y, 'bv') # blue, ▼

plt.subplot(224) 2 2  4번째
plt.plot(y, 'ks') # blacK, square ■

Built with Hugo
Theme Stack designed by Jimmy