본문 바로가기
PRACTICE/Basic

[Python, OpenCV] boxFilter 와 bilateralFilter 를 5초 간격으로 번갈아 실행시키기

by 1005 2020. 11. 11.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import cv2
import time
 
cap = cv2.VideoCapture(0#윈도우 카메라 실행
frame_size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),
                int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)))
oldTime = time.time() #시작 시간 측정
while True:
    retval, frame = cap.read() #retval: 비디오영상을 캡쳐했는지(T/F), frame: 비디오영상 프레임 저장
    if not retval:
        break; #False면 while문 탈출.
 
    newTime = time.time() #종료 시간 측정
    if 0 < newTime-oldTime < 5# 처음 5초간 boxFilter 실행
        box = cv2.boxFilter(frame, ddepth=-1, ksize=(1111))
        frame = box
    elif 5 < newTime-oldTime < 10# 5초 뒤 bilateralFilter로 전환
        bil = cv2.bilateralFilter(frame, d=11, sigmaColor=10, sigmaSpace=10)
        frame = bil
    else:
        oldTime = newTime #종료 시간을 시작시간으로 바꾸기 (10초 이상 차이나면 다시 0초부터 계산할 수 있게 리셋)
 
    print(newTime-oldTime) #시간 차 print
    cv2.imshow('frame', frame) #필터가 적용된 화면 출력
 
    key = cv2.waitKey(25#키값을 입력받기위해 0.025초 대기
    if key == 27#Esc키를 입력하면 종료
        break;
 
if cap.isOpened():
    cap.release() #비디오객체 해제
cv2.destroyAllWindows() #모든 윈도우창 삭제
 

 

 

댓글