비전

[OpenCV] 특정 색 검출

왕초보코딩러 2024. 8. 20. 23:08
728x90

opencv 라이브러리 임포트

import cv2

 

 

특정 색 검출

cv2.inRange(이미지, 최소 뽑을 bgr값, 최대 뽑을 bgr값)

 

 

예제 이미지로 빨, 초, 파를 검출해보겠습니다.

 

img = cv2.imread('data/rgb.jpg')

red = cv2.inRange(img, (0,0,128), (128,128,255)) # 빨간 색만 뽑기
# cv2.imwrite('data/red.jpg', red)
blue = cv2.inRange(img, (128,0,0), (255,128,128)) # 파란 색만 뽑기
# cv2.imwrite('data/blue.jpg', blue)
green = cv2.inRange(img, (0,128,0), (128,255,128)) # 초록 색만 뽑기
# cv2.imwrite('data/green.jpg', green)

cv2.imshow('original', img)
cv2.imshow('red', red)
cv2.imshow('blue', blue)
cv2.imshow('green', green)

cv2.waitKey()
cv2.destroyAllWindows()

 

 

 

빨간 색 검출

 

초록 색 검출

 

 

파란 색 검출

 

 

 

cv2.inRange()는 크로마키 할 때 유용합니다.

 

 

사진을 초록색 부분만 검출합니다

 

이제 원하는 backgroud와 결합합니다

그러면

 

 

+ 이미지 사이즈 변환

cv2.resize(이미지, (바꿀 w, 바꿀h))

 

img.shape에서

행이 height이고, 열이 width입니다!

img_height, img_width, channel = img.shape

 

 

완성

img = cv2.imread('data/ss.jpg') # 심슨 이미지
green_mask = cv2.inRange(img, (0,128,0), (128,255,128)) # 초록색만 뽑은 이미지
backgroud = cv2.imread('data/redcarpet.jpg') # 배경으로 쓸 레드카펫 이미지

# 이미지 사이즈 변환
resize_bg = cv2.resize(backgroud, (img.shape[1], img.shape[0])) # (width, height)

# 마스킹
cv2.copyTo(resize_bg, green_mask, img)

cv2.imshow('masking', img)
cv2.waitKey()
cv2.destroyAllWindows()

 

 

 

'비전' 카테고리의 다른 글

[MediaPipe] 포즈 인식  (0) 2024.08.25
[MediaPipe] 얼굴 인식  (0) 2024.08.23
[OpenCV] 그리기 함수  (0) 2024.08.19
[OpenCV] 마스킹  (0) 2024.08.18
[OpenCV] 이미지, 동영상  (0) 2024.08.17