[참고]
- 이미지 프로세싱 (gramman readthedocs) : https://opencv-python.readthedocs.io/en/latest/doc/08.imageProcessing/imageProcessing.html
1. Color Image
- Color Image는 pixel 당 24 bit 사용 (총 16,777,216가지 색 표현 가능). 일반적으로 True color image라고 함.
- pixel은 RGB 각각을 위해 8bit 사용
- OpenCV에서는 BGR로 표현 (그림판 색선택 이용 시 좌표가 반대(RGB)임)
- Blue : (255,0,0), Green : (0,255,0), Red : (0,0,255), White : (255,255,255), Black : (0,0,0)
- 각 pixel 당 3byte를 사용하기 때문에 용량이 큼. 이를 해결하기 위해 lookup table을 사용하여, 해당 pixel에 index만 저장
2. HSV Color-space
- H(ue) : 색상. 일반적인 색 의미. (0도 : Red, 120도 : Green, 240도 : Blue)
- S(aturation) : 채도. 색의 순수성 의미. 일반적으로 짙다, 흐리다로 표현. 중심에서 바깥쪽으로 이동하면 채도가 높음
- V(alue) : 명도. 색의 밝고 어두운 정도. 수직축의 깊이로 표현. 어둡다 밝다로 표현이 됨
3. Sample Code
# HSV 변환
import cv2
import numpy as np
src = cv2.imread('lena.jpg')
hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)
cv2.imshow('src', src)
cv2.imshow('hsv', hsv)
cv2.waitKey()
cv2.destroyAllWindows()
[결과]
#이미지 영역 설정(그림판 사용해서 값 범위 수작업으로 입력해줌)
import cv2
import numpy as np
src = cv2.imread('lena.jpg')
hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)
lower = np.array([43,43,117])
upper = np.array([211,220,254])
mask = cv2.inRange(hsv, lower, upper)
cv2.imshow('src', src)
cv2.imshow('hsv', hsv)
cv2.imshow('mask',mask)
cv2.waitKey()
cv2.destroyAllWindows()
[결과]
#bit 연산자를 통해서 선택한 영역만 남김
import cv2
import numpy as np
src = cv2.imread('lena.jpg')
hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)
lower = np.array([43,43,117])
upper = np.array([211,220,254])
mask = cv2.inRange(hsv, lower, upper)
res = cv2.bitwise_and(src, src, mask=mask)
cv2.imshow('src', src)
cv2.imshow('hsv', hsv)
cv2.imshow('mask',mask)
cv2.imshow('res', res)
cv2.waitKey()
cv2.destroyAllWindows()
[결과]
[의견]
- 색이 다양하면 깔끔하게 추출하기가 어려움
- 예쁜 레나님을 괴물로 만들어서 죄송(ㅠㅠ)
'#openCV # 파이썬' 카테고리의 다른 글
#openCV #원검출 #cv2.HoughCircles() (0) | 2019.04.04 |
---|---|
#openCV #영상분할 #cv2.threshold(), cv2.inRange() (0) | 2019.04.04 |
#openCV #Image Contours #cv2.findContours() #cv2.drawContours() (0) | 2019.04.03 |
#openCV #카메라 정보 비디오 저장 (0) | 2019.04.01 |
#openCV #python #비디오 프레임 스트림 재생 (0) | 2019.03.27 |