일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 삼성전자
- 비디오변환
- S-VHS
- 8mm
- 아날로그캠코더
- 팩트체크
- 비디오
- 8mm캠코더
- 브라운관TV
- 소니만세
- 파나소닉
- 컬러버스터
- HI8
- 레트로TV
- 소니
- Digital8
- 캠코더
- vcr
- VHS
- SQPB
- Video8
- 매크로비전
- 비디오테이프
- LG전자
- 필립스
- 비디오믹서
- 다이아몬드헤드
- 비디오기기
- 소니캠코더수리
- 소니캠코더고장
Archives
- Today
- Total
아무거나 적당히 운영되는 이상한 블로그
세로로 길쭉한 이미지를 비디오테이프에 녹화하기 편한 사진 스크롤 영상으로 만들어주는 프로그램 본문
이렇게 세로로 길쭉한 이미지들을
이렇게 비디오테이프에 녹화하기 편한 영상으로 만들어주는 프로그램입니다. 유튜브에서는 30프레임으로 나오지만 프로그램에서는 59.94 프레임으로 나옵니다.
나 혼자 쓰려고 만든 프로그램이라서 구조가 좀 괴랄합니다. 파이썬을 모른다면 이 프로그램을 쓰기 힘들겁니다. 따라서 배포용이 아닌 그냥 그런게 있다 정도로만 참고해주세요.
# -*- coding: utf-8 -*-
from PIL import Image, ImageOps
import math
import os
import sys
import cv2
import numpy
import subprocess
숫자넘버 = 1
width = 640
height = 480
fourcc = cv2.VideoWriter_fourcc(*'LJPG')
#fourcc = cv2.VideoWriter_fourcc(*'I420')
video = cv2.VideoWriter("innet.mkv", fourcc, 59.94,(width,height))
바이미지 = cv2.imread('data/bar.png')
for i in range(1, 901): #시작이미지
video.write(바이미지)
숫자넘버 = 숫자넘버 + 1
dirname="./in"
#try:
filenames = os.listdir(dirname)
for filename in filenames:
full_filename = os.path.join(dirname, filename)
if os.path.isdir(full_filename):
search(full_filename)
else:
ext = os.path.splitext(full_filename)[-1]
if ext == '.png' or ext == '.jpg' or ext == '.jpeg' or ext == '.PNG' or ext == '.JPG' or ext == '.JPEG':
rtx=full_filename
print(rtx)
초기파일위치 = os.getcwd()
파일경로가제거된파일명 = os.path.basename(rtx)
적당히잘린파일명 = os.path.splitext(파일경로가제거된파일명)
확장자가제거된파일명 = 적당히잘린파일명[0]
잘라질이미지= Image.open(rtx)
가로길이 = 잘라질이미지.size[0]
세로길이 = 잘라질이미지.size[1]
print(str(가로길이)+'/'+str(세로길이))
뉴가로길이 = 640
뉴세로길이 = round(세로길이*(640/가로길이))
print(str(뉴가로길이)+'/'+str(뉴세로길이))
if 가로길이 >= 640 :
잘라질이미지.thumbnail((640,뉴세로길이))
else :
커진이미지 = 잘라질이미지.resize((640,뉴세로길이),5)
잘라질이미지 = 커진이미지
print(math.ceil((뉴세로길이-478)/2))
if math.ceil((뉴세로길이-478)/2) < 0 :
한번더=ImageOps.pad(잘라질이미지, (640,480), 5, 'black')
for i in range(1, 121):
video.write(cv2.cvtColor(numpy.array(한번더), cv2.COLOR_RGB2BGR))
숫자넘버 = 숫자넘버 + 1
elif 뉴세로길이 > 550 :
반복을시작하지=range(1,math.ceil((뉴세로길이-478)/2+1)) #가운대 2개 int의 합이 480이 될것
for 반복함수 in 반복을시작하지:
윗컷팅함수=반복함수*2-2 #int의 합이 0이 될것
아랫커팅함수=반복함수*2+478 #int의 합이 480이 될것
if 아랫커팅함수 >= 뉴세로길이:
윗컷팅함수 = 뉴세로길이-480
아랫커팅함수 = 뉴세로길이
잘린이미지=잘라질이미지.crop((0, 윗컷팅함수, 640, 아랫커팅함수))
for i in range(1, 61):
video.write(cv2.cvtColor(numpy.array(잘린이미지), cv2.COLOR_BGR2RGB))
숫자넘버 = 숫자넘버 + 1
elif 윗컷팅함수 == 0:
잘린이미지=잘라질이미지.crop((0, 윗컷팅함수, 640, 아랫커팅함수))
for i in range(1, 61):
video.write(cv2.cvtColor(numpy.array(잘린이미지), cv2.COLOR_BGR2RGB))
숫자넘버 = 숫자넘버 + 1
else :
잘린이미지=잘라질이미지.crop((0, 윗컷팅함수, 640, 아랫커팅함수))
video.write(cv2.cvtColor(numpy.array(잘린이미지), cv2.COLOR_BGR2RGB))
숫자넘버 = 숫자넘버 + 1
else :
한번더=ImageOps.pad(잘라질이미지, (640,480), 5, 'black')
for i in range(1, 121):
video.write(cv2.cvtColor(numpy.array(한번더), cv2.COLOR_RGB2BGR))
숫자넘버 = 숫자넘버 + 1
for i in range(1, 301): #종료이미지
video.write(바이미지)
숫자넘버 = 숫자넘버 + 1
video.release()
subprocess.call('ffmpeg -i innet.mkv -c:v libx264 -r 59.94 -crf 19 -preset faster -profile:v high -pix_fmt yuv420p out.mkv')
os.remove('innet.mkv')
'잡담' 카테고리의 다른 글
softether vpn 리눅스 서버 우분투 AWS Lightsail 기준 프로그램 업데이트 방법 (0) | 2020.04.11 |
---|---|
교세라 ECOSYS P5021cdn 컬러 레이저 프린터 (0) | 2020.03.13 |
개인위키 만들었습니다 (0) | 2019.12.15 |
오픈나무(openNAMU) 설치와 설정 방법 (0) | 2019.12.13 |
프로젝트 나나 소개 (0) | 2019.12.12 |
Comments