Benzer bir işlem için chatgptye sormuştum. Hallediyor.
import cv2
import numpy as np
def convert_to_16_9_vertical_to_horizontal(input_video_path, output_video_path):
# Giriş videosunu yükle
cap = cv2.VideoCapture(input_video_path)
if not cap.isOpened():
print("Giriş videosu yüklenemedi!")
return
# Giriş videosunun özelliklerini al
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
# Yatay format için yeni boyutları hesapla (16:9)
target_width = int(frame_height * (16 / 9))
target_height = frame_height
# Yeni video dosyası oluştur
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(output_video_path, fourcc, fps, (target_width, target_height))
# Siyah arka plan oluştur
black_bg = np.zeros((target_height, target_width, 3), dtype=np.uint8)
while True:
ret, frame = cap.read()
if not ret:
break
# Dikey görüntüyü yatayda ortala
start_x = (target_width - frame_width) // 2
end_x = start_x + frame_width
black_bg[:, start_x:end_x] = frame
# Yeni çerçeveyi yaz
out.write(black_bg)
# Kullanılan kaynakları serbest bırak
cap.release()
out.release()
cv2.destroyAllWindows()
print("Dönüşüm tamamlandı. Yeni video:", output_video_path)
# Örnek kullanım
input_video_path = "dikey_video.mp4"
output_video_path = "yatay_video.mp4"
convert_to_16_9_vertical_to_horizontal(input_video_path, output_video_path)