본문 바로가기
KDT/과제

[파이썬, Python] OpenCV - 동영상 필터 입히기

by coding-choonsik 2023. 9. 2.
728x90
반응형
SMALL

💡 문제.

웹캠(또는 동영상)에서 스페이스바를 누를 때마다 '일반영상', '가우시안 필터영상', '케니 필터영상'으로 변환되는 프로그램을 작성해보자.

 

📄 사용한 동영상 파일

cat.mp4
1.03MB

 

import cv2
import numpy as np

cap = cv2.VideoCapture('cat.mp4')

def blur_filter(img):
    img = cv2.GaussianBlur(img, (3, 3), 0)
    return img

def canny_filter(img):
    med_val = np.median(img)
    lower = int(max(0, 0.7 * med_val))
    upper = int(min(255, 1.3 * med_val))

    img = cv2.GaussianBlur(img, (3, 3), 0)
    img = cv2.Canny(img, lower, upper)

    return img

cam_mode = 0

while True:
    ret, frame = cap.read()

    if not ret:
        print("비디오를 읽을 수 없습니다.")
        break

    if cam_mode == 1:
        frame = blur_filter(frame)
    elif cam_mode == 2:
        frame = canny_filter(frame)

    cv2.imshow('frame', frame)

    key = cv2.waitKey(1)
    if key == 27:  # ESC 키
        break
    elif key == ord(' '):
        cam_mode += 1
        if cam_mode == 3:
            cam_mode = 0

cap.release()
cv2.destroyAllWindows()

 

 

728x90
반응형
LIST