Wangtwohappy's picture
Upload folder using huggingface_hub
f8ba0eb verified
import cv2
import os
def rotate_video(input_path, output_path, rotation_angle=90):
"""
旋转视频文件
:param input_path: 输入视频路径
:param output_path: 输出视频路径
:param rotation_angle: 旋转角度 (90, 180, 270)
:return: 是否成功
"""
try:
# 打开视频文件
cap = cv2.VideoCapture(input_path)
if not cap.isOpened():
print(f"无法打开视频文件: {input_path}")
return False
# 获取视频属性
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
print(f"视频信息: {width}x{height}, FPS: {fps}, 总帧数: {total_frames}")
# 根据旋转角度调整输出视频的宽高
if rotation_angle == 90 or rotation_angle == 270:
output_width = height
output_height = width
else:
output_width = width
output_height = height
# 创建视频写入器
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(output_path, fourcc, fps, (output_width, output_height))
frame_count = 0
while True:
ret, frame = cap.read()
if not ret:
break
# 旋转帧
if rotation_angle == 90:
rotated = cv2.rotate(frame, cv2.ROTATE_90_CLOCKWISE)
elif rotation_angle == 180:
rotated = cv2.rotate(frame, cv2.ROTATE_180)
elif rotation_angle == 270:
rotated = cv2.rotate(frame, cv2.ROTATE_90_COUNTERCLOCKWISE)
else:
print("不支持的旋转角度,请使用90, 180, 或270")
return False
# 写入旋转后的帧
out.write(rotated)
frame_count += 1
if frame_count % 100 == 0:
print(".1f")
# 释放资源
cap.release()
out.release()
print(f"视频旋转完成! 已处理 {frame_count} 帧")
print(f"输出文件: {output_path}")
return True
except Exception as e:
print(f"处理视频时出错: {str(e)}")
return False
if __name__ == "__main__":
# 设置输入输出路径
input_video = "videos/sample1_raw.mp4"
output_video = "videos/sample1_rotated_270.mp4"
# 检查输入文件是否存在
if not os.path.exists(input_video):
print(f"输入视频文件不存在: {input_video}")
print("请确保视频文件在videos目录下")
else:
# 旋转视频 (默认90度顺时针)
print("开始旋转视频...")
success = rotate_video(input_video, output_video, 270)
if success:
print("视频旋转成功!")
else:
print("视频旋转失败!")