使用python写一个程序,将指定路径下的所有视频resize到1920×1080,并将其贴到2560×1440的黑色背景上,并另存为avi格式
时间: 2024-03-30 22:37:07 浏览: 23
好的,你可以使用OpenCV库实现这个功能。以下是一个示例代码:
```python
import os
import cv2
# 指定路径下的所有视频文件夹
path = "/path/to/videos"
videos_folder = ["folder1", "folder2", "folder3"]
# 遍历所有视频文件夹
for folder in videos_folder:
# 获取视频文件夹路径
folder_path = os.path.join(path, folder)
# 获取视频文件夹下的所有视频文件
videos = [f for f in os.listdir(folder_path) if f.endswith('.mp4')]
# 遍历所有视频文件
for video in videos:
# 读取视频
cap = cv2.VideoCapture(os.path.join(folder_path, video))
# 获取视频帧率和尺寸
fps = cap.get(cv2.CAP_PROP_FPS)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 创建一个空白画布
canvas = 255 * np.ones((1440, 2560, 3), dtype=np.uint8)
# 遍历视频的每一帧
while cap.isOpened():
ret, frame = cap.read()
if ret:
# 将帧resize到1920x1080
frame = cv2.resize(frame, (1920, 1080))
# 将帧贴到画布上
x_offset = int((2560 - 1920) / 2)
y_offset = int((1440 - 1080) / 2)
canvas[y_offset:y_offset+1080, x_offset:x_offset+1920] = frame
# 显示画布
cv2.imshow('canvas', canvas)
# 暂停一段时间,以达到视频帧率
cv2.waitKey(int(1000/fps))
else:
break
# 释放视频资源
cap.release()
cv2.destroyAllWindows()
# 保存视频
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter(os.path.join(folder_path, video[:-4] + '_resized.avi'), fourcc, fps, (2560, 1440))
cap = cv2.VideoCapture(os.path.join(folder_path, video))
while cap.isOpened():
ret, frame = cap.read()
if ret:
frame = cv2.resize(frame, (1920, 1080))
x_offset = int((2560 - 1920) / 2)
y_offset = int((1440 - 1080) / 2)
canvas[y_offset:y_offset+1080, x_offset:x_offset+1920] = frame
out.write(canvas)
else:
break
# 释放视频资源
cap.release()
out.release()
cv2.destroyAllWindows()
```
你需要将`/path/to/videos`替换为你的视频文件夹路径,将`folder1`、`folder2`、`folder3`替换为你要处理的视频文件夹名。这段代码会遍历每个视频文件夹,读取视频文件夹下的所有视频文件,并遍历每个视频文件,将其resize到1920x1080并贴到2560x1440的黑色背景上,然后另存为avi格式。保存的文件名格式为`video_resized.avi`。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)