PYTHON 프로그래밍

본문 바로가기
사이트 내 전체검색


PYTHON 프로그래밍
PYTHON 프로그래밍

16. 채널 범위 병합(addWeighted)

페이지 정보

작성자 관리자 댓글 0건 조회 3,352회 작성일 19-09-10 19:21

본문

16. 채널 범위 병합(addWeighted)

채널 범위 병합(addWeighted)

 

영상이나 이미지를 색상을 검출 할 때, cv2.inRange()의 영역이 한정되어 색상을 설정하는 부분이 한정되어 있습니다.

이 때 특정 범위들을 병합할 때 사용합니다.

 

 

소스 :

import cv2

src = cv2.imread("image/tomato.png", cv2.IMREAD_COLOR)
hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(hsv)

lower_red = cv2.inRange(hsv, (0, 100, 100), (5, 255, 255))
upper_red = cv2.inRange(hsv, (170, 100, 100), (180, 255, 255))
added_red = cv2.addWeighted(lower_red, 1.0, upper_red, 1.0, 0.0)

red = cv2.bitwise_and(hsv, hsv, mask = added_red)
red = cv2.cvtColor(red, cv2.COLOR_HSV2BGR)

cv2.imshow("red", red)
cv2.waitKey(0)
cv2.destroyAllWindows()

 


소스 설명 :


lower_red = cv2.inRange(hsv, (0, 100, 100), (5, 255, 255))
upper_red = cv2.inRange(hsv, (170, 100, 100), (180, 255, 255))
added_red = cv2.addWeighted(lower_red, 1.0, upper_red, 1.0, 0.0)

빨간색 영역은 0 ~ 5, 170 ~ 180의 범위로 두부분으로 나뉘어 있습니다.

이 때, 두 부분을 합쳐서 한 번에 출력하기 위해서 사용합니다.

cv2.inRange(다채널 이미지, (채널1 최솟값, 채널2 최솟값, 채널3 최솟값), (채널1 최댓값, 채널2 최댓값, 채널3 최댓값))을 통하여 다채널 이미지도 한 번에 범위를 설정할 수 있습니다.

HSV 형식이므로 각각의 h, s, v 범위를 한 번에 설정합니다.

분리된 채널을 cv2.addWeighted(이미지1, 이미지1 비율, 이미지2, 이미지2 비율, 가중치)를 이용하여 채널을 하나로 합칠 수 있습니다.

두 이미지의 채널을 그대로 합칠 예정이므로 각각의 비율은 1.0으로 사용하고, 가중치는 사용하지 않으므로 0.0을 할당합니다.

cv2.inRange()를 사용할 때, 단일 채널 이미지의 범위만 할당하여 병합할 수 도 있습니다.

 

결과 :


 

1.PNG 

tomato.png 

댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.