import cv2
import numpy as np
cap = cv2.VideoCapture('monkey.mp4') #비디오 객체 생성
retval, frame = cap.read() # 첫 프레임 읽어오기
frame=cv2.resize(frame,None,fx=0.2,fy=0.2,interpolation=cv2.INTER_AREA) #사이즈 조정
#bgr을 hsv로 변환 후 hsv를 쪼갬
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(hsv)
#영역 선택
roi = cv2.selectROI('img',frame)
roi_h = h[roi[1]:roi[1]+roi[3],roi[0]+roi[2]]
#영상이 끝나거나 esc 키를 누를 때까지 반복
while True:
retval, frame = cap.read()
if not retval:
break
frame=cv2.resize(frame,None,fx=0.2,fy=0.2,interpolation=cv2.INTER_AREA)
cv2.imshow('frame_before',frame)
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(hsv)
#선택 영역의 h(hue))를 히스토그램으로 만들고 역투영하기
hist = cv2.calcHist([roi_h], [0], None,[64], [0, 256])
backP= cv2.calcBackProject([h.astype(np.float32)], [0], hist,[0, 256],scale=1.0)
hist = cv2.sort(hist, cv2.SORT_EVERY_COLUMN+cv2.SORT_DESCENDING)
k = 1
T = hist[k][0] -1
#역투영 한것을 이진화처리
ret, dst = cv2.threshold(backP, T, 255, cv2.THRESH_BINARY)
cv2.imshow('frame_after',dst)
key = cv2.waitKey(25)
if key == 27: # Esc
break
if cap.isOpened():
cap.release()
cv2.destroyAllWindows()
'인공지능 > OpenCV' 카테고리의 다른 글
[OpenCV] Cartoon Effect 이미지 카툰화 (0) | 2020.04.09 |
---|---|
[OpenCV] Haar Cascade 사용하여 얼굴에 마스크 합성하기 (스*우) (5) | 2020.04.09 |
[OpenCV] 트랙바를 이용하여 이진화 (0) | 2020.04.09 |
[OpenCV] 유튜브영상 윈도우창에 출력하기 (0) | 2019.08.15 |
[OpenCV] 동영상 윈도우창에 출력하기 (0) | 2019.08.15 |