반응형
황선규 박사님의 OpenCV 강의를 공부하면서 정리하였습니다.
황선규 박사님의 'OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝'를 바탕으로 제작하였습니다.
특정 색상 영역 추출
특정 색상 영역 추출할 때 HSV 색 공간을 이용하는게 좋습니다.
RGB는 어두운 사진에서 색상 영역 추출하면 잘 되지 않습니다.
HSV는 H,S로 색상을 조절하고 V는 밝기를 조절하므로 H와 S 범위만 지정해 준다면 어두운 영상에서도 색상 영역 추출을 할 수 있습니다.
따라서 BGR 영상을 HSV로 전환하고 색상 영역 추출을 해야 합니다.
1. 특정 범위 안에 있는 행렬 원소 검출 - cv2.inRange()
OpenCV에서 제공하는 cv2.inRange 함수를 사용하여 특정 생삭 영역을 추출할 수 있습니다.
[함수 설명]
cv2.inRange(src, lowerb, upperb, dst=None) -> dst
• src: 입력 행렬
• lowerb: 하한 값 행렬 또는 스칼라
• upperb: 상한 값 행렬 또는 스칼라
• dst: 입력 영상과 같은 크기의 마스크 영상. (numpy.uint8) 범위 안에 들어가는 픽셀은 255, 나머지는 0으로 설정
[예제 코드]
src = cv2.imread('candies.png')
if src is None:
print('Image load failed!')
sys.exit()
src_hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)
dst1 = cv2.inRange(src, (0, 128, 0), (100, 255, 100))
dst2 = cv2.inRange(src_hsv, (50, 150, 0), (80, 255, 255))
cv2.imshow('src', src)
cv2.imshow('dst1', dst1)
cv2.imshow('dst2', dst2)
cv2.waitKey()
cv2.destroyAllWindows()
[결과]
HSV 색 공간에서 녹색 영역 추출이 잘 된다는 것을 확인할 수 있습니다.
반응형
'Python > 파이썬 OpenCV 공부' 카테고리의 다른 글
[파이썬 OpenCV] 히스토그램 역투영 - cv2.calcBackProject, cv2.selectROI (0) | 2020.09.29 |
---|---|
[파이썬 OpenCV] 트랙바를 이용한 특정 색상 영역 추출 - cv2.inRange, cv2.createTrackbar (0) | 2020.09.28 |
[파이썬 OpenCV] 히스토그램 평활화 - cv2.equlizeHist (0) | 2020.09.28 |
[파이썬 OpenCV] 영상의 명암비 조절 - 히스토그램 스트레칭, 정규화(cv2.normalize) (1) | 2020.09.28 |
[파이썬 OpenCV] OpenCV 함수만으로 히스토그램 그리기 - cv2.line 활용 (0) | 2020.09.28 |