728x90
반응형
'New File' 아이콘을 클릭하고 파일 이름을 'movie_pen.py'로 생성한 후, 아래의 코드를 입력한다.
import cv2 import time import random cap = cv2.VideoCapture('1.mp4') # 1.mp4 w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') out = cv2.VideoWriter('output_%s.mp4' % time.time(), fourcc, cap.get(cv2.CAP_PROP_FPS) / 1, (w, h)) # 1/2배속 동영상으로 저장할 경우 : cap.get(cv2.CAP_PROP_FPS) / 2 # VideoWriter 동영상 저장 while cap.isOpened(): ret, img = cap.read() # 한프레임씩 불러옴 if not ret: break if random.random() > 0.9: # 랜덤으로 10%의 프레임만 랜덤으로 흔들리게 한다 theta = random.randint(-3, 3) # 랜덤으로 회전하는 효과 (-3도 ~ +3도, 흔들리는 효과를 내기 위해서) x, y = random.randint(-10, 10), random.randint(-10, 10) # 랜덤으로 상하좌우 흔들리는 효과 (상,하,좌,우 각각 10, 흔들리는 효과를 내기 위해서) M = cv2.getRotationMatrix2D(center=(w // 2, h // 2), angle=theta, scale=1.0) M[0, 2] += x M[1, 2] += y img = cv2.warpAffine(img, M=M, dsize=(w, h)) img = cv2.GaussianBlur(img, ksize=(9, 9), sigmaX=0) #가우시안 블러 효과 # sigma_S, sigma_r, shade_factor 범위 참고 ''' sigma_s: Range between 0 to 200. Default 60. sigma_r: Range between 0 to 1. Default 0.07. shade_factor: Range between 0 to 0.1. Default 0.02. ''' gray, color = cv2.pencilSketch(img, sigma_s=60, sigma_r=0.05, shade_factor=0.015) # 연필효과 cv2.imshow('gray', gray) # cv2.imshow('color', color) out.write(cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR)) if cv2.waitKey(1) == ord('q'): break out.release() cap.release() |
반응형
코드 작성이 완료되면, 적당한 동영상 파일을 구해서 '1.mp4'로 저장한 후, movie_pen.py 파일과 같은 폴더로 이동시켜준다.
728x90
코드 작성과 이미지 파일 준비까지 완료되면, 'Run' 탭에서 'Run and Debug'를 클릭한 뒤, 'Python File'을 선택해서 작성된 'movie_pen.py'의 코드를 실행시키면, 1.mp4 파일이 있는 폴더에 'output_숫자.mp4' 형식의 동영상 파일이 생성된 것을 확인할 수 있다.
728x90
반응형
'프로그래밍 > 파이썬' 카테고리의 다른 글
파이썬 - GUI 버튼 동작 (0) | 2021.07.11 |
---|---|
파이썬 - GUI 기본 프레임 (0) | 2021.07.11 |
파이썬 - 동영상 파일 아스키 코드로 변환 (0) | 2021.05.26 |
파이썬 - 이미지 파일 아스키 코드로 변환 (0) | 2021.05.25 |
파이썬 - 랜덤 의사결정 (0) | 2021.05.24 |