RGB BGR > Red Green Blue
3가지 색상 체널을 사용해서 이미지 표현
HSV
H: Hue(색상)
S: Saturation (채도) : 색상의 진한 정도
V : Value(명도): 색상의 밝기
import cv2
img = cv2.imread('./data/balloon.jpg')
# RGB > HSV 로 변경
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 빨간색만 가져오기
# H : -15~15
# S, V: 100~255
import numpy as np
lower = np.array([-15,100,100])
upper = np.array([15,255,255])
# 쓸 영역과 안 쓸 영역 구분
#1. 범위 값 만ㄷ으러줘기< 버의안에 있는 값만 사용
# 3. 원본 ㅇ
mask = cv2.inRange(hsv,lower, upper)
img2 = cv2.bitwise_and(img,img, mask=mask)
cv2.imshow('balloon',hsv)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
img = cv2.imread('./data/balloon.jpg')
# RGB > HSV 로 변경
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 빨간색만 가져오기
# H : -15~15
# S, V: 100~255
import numpy as np
lower = np.array([40,100,100])
upper = np.array([70,255,255])
# 쓸 영역과 안 쓸 영역 구분
#1. 범위 값 만ㄷ으러줘기< 버의안에 있는 값만 사용
# 3. 원본 ㅇ
mask = cv2.inRange(hsv,lower,upper)
img2 = cv2.bitwise_and(img,img, mask=mask)
cv2.imshow('balloon',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
img = cv2.imread('./data/histogram.png')
cv2.imshow('histogram',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
import matplotlib.pyplot as plt
hist = cv2.calcHist([img], [0], None, [256], [0, 256])
plt.plot(hist)
plt.xlim([0, 255])
plt.show()
img = cv2.imread('./data/histogram.png', cv2.IMREAD_GRAYSCALE)
# 색상의 분표를 120~200 > 0~255까지로 변경하기
img = cv2.equalizeHist(img)
cv2.imshow('histogram',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
import matplotlib.pyplot as plt
hist = cv2.calcHist([img], [0], None, [256], [0, 256])
plt.plot(hist)
plt.xlim([0, 255])
plt.show()
import cv2
maple = cv2.imread('./data/animation.jpg')
maple_gray = cv2.cvtColor(maple, cv2.COLOR_BGR2GRAY)
blue = cv2.imread('./data/snail.jpg')
blue_gray = cv2.cvtColor(blue, cv2.COLOR_BGR2GRAY)
green = cv2.imread('./data/mushroom.jpg')
green_gray = cv2.cvtColor(green, cv2.COLOR_BGR2GRAY)
h,w = green_gray.shape
result = cv2.matchTemplate(maple_gray, green_gray, cv2.TM_CCOEFF_NORMED )
import numpy as np
loc = np.where(result>=0.7)
for pt in zip(*loc[::-1]):
cv2.rectangle(maple,pt,(pt[0]+ w,pt[1]+h),(0,255,0),2)
cv2.imshow('maple',maple)
#cv2.imshow('blue', blue)
#cv2.imshow('green', green)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
num = cv2.imread('./data/number.png')
# 침식과 팽창의 정도 = (5,5) 숫자가 커지면 정도가 늘어남
import numpy as np
kernel = np.ones((3,3), np.uint8) # unit = unsigned integer : 부호기 없는 정수 (양의 정수)
erosion = cv2.erode(num, kernel, iterations = 1)
dilation = cv2.dilate(num, kernel, iterations = 1)
cv2.imshow('num',num)
cv2.imshow('erosion',erosion)
cv2.imshow('dilation',dilation)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
num = cv2.imread('./data/a.png')
# 침식과 팽창의 정도 = (5,5) 숫자가 커지면 정도가 늘어남
import numpy as np
kernel = np.ones((5,5), np.uint8) # unit = unsigned integer : 부호기 없는 정수 (양의 정수)
# iteration = 반복 횟수
erosion = cv2.erode(num, kernel, iterations = 2)
dilation = cv2.dilate(erosion, kernel, iterations = 2)
cv2.imshow('num',num)
cv2.imshow('erosion',erosion)
cv2.imshow('dilation',dilation)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
num = cv2.imread('./data/b.png')
# 침식과 팽창의 정도 = (5,5) 숫자가 커지면 정도가 늘어남
import numpy as np
kernel = np.ones((5,5), np.uint8) # unit = unsigned integer : 부호기 없는 정수 (양의 정수)
# iteration = 반복 횟수
dilation = cv2.dilate(num, kernel, iterations = 2)
erosion = cv2.erode(dilation, kernel, iterations = 2)
cv2.imshow('num',num)
cv2.imshow('erosion',erosion)
cv2.imshow('dilation',dilation)
cv2.waitKey(0)
cv2.destroyAllWindows()
# Opening
import cv2
num = cv2.imread('./data/a.png')
kernel = np.ones((3,3),np.uint8)
opening = cv2.morphologyEx(num, cv2.MORPH_OPEN, kernel)
cv2.imshow('noise', num)
cv2.imshow('opening', opening)
cv2.waitKey(0)
cv2.destroyAllWindows()
# Closing
import cv2
num = cv2.imread('./data/b.png')
kernel = np.ones((3,3),np.uint8)
closing = cv2.morphologyEx(num, cv2.MORPH_OPEN, kernel)
cv2.imshow('noise', num)
cv2.imshow('closing', closing)
cv2.waitKey(0)
cv2.destroyAllWindows()