본문 바로가기
카테고리 없음

파이썬 OpenCV로 동영상 필터 적용하기: 5가지 방법

by 업부업과 함께 2025. 4. 1.

 

반응형
파이썬 OpenCV로 동영상 필터 적용하기

OpenCV는 컴퓨터 비전영상 처리를 위한 강력한 라이브러리로, 파이썬과 함께 사용할 때 다양한 동영상 필터를 적용할 수 있습니다. 본 포스트에서는 OpenCV를 사용하여 동영상에 필터를 적용하는 5가지 방법을 소개하겠습니다.

1. 그레이스케일 필터

그레이스케일 필터는 색상을 제거하고 명암만 남기는 필터로, 이미지의 디테일을 강조하는 데 유용합니다. OpenCV에서는 cv2.cvtColor() 함수를 사용하여 쉽게 구현할 수 있습니다.

예제 코드:

import cv2

cap = cv2.VideoCapture('video.mp4')
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('Grayscale Video', gray_frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
    

2. 블러 필터

블러 필터는 이미지의 노이즈를 줄이고 부드럽게 만드는 데 사용됩니다. OpenCV의 cv2.GaussianBlur() 함수를 사용하여 적용할 수 있습니다.

예제 코드:

cap = cv2.VideoCapture('video.mp4')
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    blurred_frame = cv2.GaussianBlur(frame, (15, 15), 0)
    cv2.imshow('Blurred Video', blurred_frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
    

3. 엣지 검출 필터

엣지 검출 필터는 이미지의 경계선이나 형태를 강조합니다. OpenCV의 cv2.Canny() 함수를 사용하여 간단히 적용할 수 있습니다.

예제 코드:

cap = cv2.VideoCapture('video.mp4')
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    edges = cv2.Canny(frame, 100, 200)
    cv2.imshow('Edge Detection', edges)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
    

4. 색상 필터

특정 색상만 강조하는 색상 필터를 적용할 수 있습니다. OpenCV의 cv2.inRange() 함수를 사용하여 특정 범위의 색상을 추출할 수 있습니다.

예제 코드:

cap = cv2.VideoCapture('video.mp4')
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    lower_color = np.array([50, 100, 100])
    upper_color = np.array([70, 255, 255])
    mask = cv2.inRange(hsv, lower_color, upper_color)
    cv2.imshow('Color Filter', mask)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
    

5. 비디오 효과 필터

OpenCV는 다양한 비디오 효과 필터를 포함하고 있습니다. 예를 들어, cv2.addWeighted() 함수를 사용하여 두 개의 프레임을 혼합할 수 있습니다.

예제 코드:

cap = cv2.VideoCapture('video.mp4')
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    overlay = cv2.addWeighted(frame, 0.5, frame, 0.5, 0)
    cv2.imshow('Video Effect', overlay)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
    

실용적인 팁

설명
1. 동영상 포맷 확인 OpenCV는 다양한 동영상 포맷을 지원하지만, 코덱에 따라 재생되지 않을 수 있습니다. mp4 형식을 사용하는 것이 좋습니다.
2. 프레임 속도 조절 필터 적용 시 프레임 속도를 조절하여 부드러운 재생을 유지하세요. cv2.waitKey()의 인자를 조정할 수 있습니다.
3. 필터 조합 활용 여러 필터를 조합하여 독창적인 효과를 만들어보세요. 예를 들어, 블러 필터 후 엣지 검출을 적용할 수 있습니다.
4. GPU 가속 사용 OpenCV의 CUDA 모듈을 사용하여 GPU에서 필터를 적용하면 성능이 향상됩니다. CUDA 설정을 고려해보세요.
5. 결과 저장하기 처리된 동영상을 파일로 저장하려면 cv2.VideoWriter()를 사용하세요. 동영상 포맷 및 코덱을 맞춰 저장해야 합니다.

요약 및 실천 팁


OpenCV를 사용하여 다양한 필터를 동영상에 적용하는 방법을 살펴보았습니다. 그레이스케일, 블러, 엣지 검출, 색상 필터, 비디오 효과 등 여러 방법을 활용하여 창의적인 비디오를 제작할 수 있습니다. 동영상 필터를 적용하는 것은 재미있고 유용한 영상 처리 기술로, 여러분의 콘텐츠를 더욱 매력적으로 만들 수 있습니다.

이제 여러분은 OpenCV를 사용하여 동영상에 다양한 필터를 적용할 수 있는 방법을 배웠습니다. 실용적인 팁을 바탕으로 직접 실험해보며 새로운 효과를 찾아보세요!

반응형