- 구현할 기능
- 파란색 폴더 영역 추출하기
- 파랑 영역에 다른 배경 영상을 합성하여 저장하기
- 스페이스바를 이용하여 크로마 키 합성 동작 제어하기
import cv2
import sys
import numpy as np
cap1=cv2.VideoCapture(0)
if not cap1.isOpened():
print('video open failed!')
sys.exit()
cap2=cv2.VideoCapture('mountain.mp4')
w=round(cap1.get(cv2.CAP_PROP_FRAME_WIDTH))
h=round(cap1.get(cv2.CAP_PROP_FRAME_HEIGHT))
frame_cnt1=round(cap1.get(cv2.CAP_PROP_FRAME_COUNT))
frame_cnt2=round(cap2.get(cv2.CAP_PROP_FRAME_COUNT))
print('w x h: {} x {}'.format(w,h))
print('frame_cnt1:',frame_cnt1)
print('frame_cnt2:',frame_cnt2)
fps=cap1.get(cv2.CAP_PROP_FPS)
delay=int(1000/fps)
#출력 동영상 객체 생성
fourcc=cv2.VideoWriter_fourcc(*'DIVX')
out=cv2.VideoWriter('output.avi',fourcc,fps,(w,h))
#합성 여부 플래그
do_composit=False # 합성 안한 상태
while True:
ret1,frame1=cap1.read()
if not ret1:
break
# do_composit 플래그가 True일 때에만 합성
if do_composit:
ret2,frame2=cap2.read()
if not ret2:
break
frame2=cv2.resize(frame2,(w,h))
#HSV 색 공간에서 원하는 영역을 검출하여 합성
hsv=cv2.cvtColor(frame1,cv2.COLOR_BGR2HSV)
mask=cv2.inRange(hsv,(100,150,0),(120,255,200))
cv2.copyTo(frame2,mask,frame1)
out.write(frame1)
cv2.imshow('frmae',frame1)
key=cv2.waitKey(delay)
#스페이스바를 누르면 do_composit 플래그를 변경
if key==ord(' '):
do_composit= not do_composit
elif key==27:
break
cap1.release()
cap2.release()
out.release()
cv2.destroyAllWindows()
'Computer Vision > opencv(python)' 카테고리의 다른 글
[22] 2)블러링-평균값 필터 (0) | 2021.03.19 |
---|---|
[21] 4.필터링 1)필터링 이해하기 (0) | 2021.03.19 |
[19] 8)히스토그램 역투영 (0) | 2021.03.18 |
[18] 7) 특정 색상 영역 추출 (0) | 2021.03.18 |
[17] 6) 히스토그램 평활화 (0) | 2021.03.18 |