반응형
아래 코드는 반드시 카메라가 있어야 하며, 카메라에 접근할 수 있는 드라이버가 설치되어야 한다.
노트북의 경우 카메라가 달려있기 때문에 바로 사용가능하다.
사용을 위해서는 라이브러리 opencv와 numpy가 있어야 한다.
# 라이브러리 다운로드
# pip install opencv-python
# pip install numpy
import cv2
import numpy as np
cap = cv2.VideoCapture(0) # 카메라 모듈 사용.
while(1):
ret, frame = cap.read() # 카메라 모듈 연속프레임 읽기
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # BGR을 HSV로 변환해줌
# define range of blue color in HSV
lower_blue = np.array([100,100,120]) # 파랑색 범위
upper_blue = np.array([150,255,255])
lower_green = np.array([50, 150, 50]) # 초록색 범위
upper_green = np.array([80, 255, 255])
lower_red = np.array([150, 50, 50]) # 빨강색 범위
upper_red = np.array([180, 255, 255])
# Threshold the HSV image to get only blue colors
mask = cv2.inRange(hsv, lower_blue, upper_blue) # 110<->150 Hue(색상) 영역을 지정.
mask1 = cv2.inRange(hsv, lower_green, upper_green) # 영역 이하는 모두 날림 검정. 그 이상은 모두 흰색 두개로 Mask를 씌움.
mask2 = cv2.inRange(hsv, lower_red, upper_red)
# Bitwise-AND mask and original image
res = cv2.bitwise_and(frame, frame, mask=mask) # 흰색 영역에 파랑색 마스크를 씌워줌.
res1 = cv2.bitwise_and(frame, frame, mask=mask1) # 흰색 영역에 초록색 마스크를 씌워줌.
res2 = cv2.bitwise_and(frame, frame, mask=mask2) # 흰색 영역에 빨강색 마스크를 씌워줌.
cv2.imshow('frame',frame) # 원본 영상을 보여줌
cv2.imshow('Blue', res) # 마스크 위에 파랑색을 씌운 것을 보여줌.
cv2.imshow('Green', res1) # 마스크 위에 초록색을 씌운 것을 보여줌.
cv2.imshow('red', res2) # 마스크 위에 빨강색을 씌운 것을 보여줌.
k = cv2.waitKey(5) & 0xFF
if k == 27:
break
cv2.destroyAllWindows()
반응형
(파이썬 실행 결과)
red파라미터값이 주변 조명에 의해 잘 추출되지 않았다. 값을 수정하면 된다.
주변 빛의 밝기에 따라 추출값이 달라질 수 있다.
범위 값 파라미터를 적절히 변경하여 사용하면 된다.
<영상을 그레이로 변경하기>
https://ansan-survivor.tistory.com/639
<RGB색상 합성하기>
https://ansan-survivor.tistory.com/640
반응형
'파이썬(python) > Python OpenCV' 카테고리의 다른 글
[Python OpenCV] 파이썬 두 이미지 합치기, 두 이미지 합성 시키기 (RGB값 더하기) (0) | 2021.05.02 |
---|---|
[Python OpenCV] 파이썬 영상 추출하기, 회색(gray)으로 배경 변경하기 (0) | 2021.05.02 |
[Python OpenCV] 그림 이미지에 색상 및 글자 넣기, 사용자의 마우스 드레그로 그림그리기 (0) | 2020.09.19 |
[Python OpenCV] 왜곡된 이미지 펼치기, 굽어진 이미지 펼치기, 이미지 보정 (0) | 2020.09.17 |
[Python OpenCV] 선분을 파악하고 선분의 중심에 수직선을 긋기 (0) | 2020.09.17 |