使用python写一个程序,将指定路径下的所有视频resize到1920×1080,并将其贴到2560×1440的画布上、
时间: 2024-03-30 18:37:07 浏览: 16
好的,你可以使用OpenCV库和Pillow库来实现这个功能。以下是一个示例代码:
```python
import cv2
from PIL import Image
# 指定路径下的所有视频文件
path = "/path/to/videos"
videos = ["video1.mp4", "video2.mp4", "video3.mp4"]
# 遍历所有视频
for video in videos:
# 读取视频
cap = cv2.VideoCapture(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 = Image.new('RGB', (2560, 1440), (0, 0, 0))
# 遍历视频的每一帧
while cap.isOpened():
ret, frame = cap.read()
if ret:
# 将帧resize到1920x1080
frame = cv2.resize(frame, (1920, 1080))
# 将帧转换成Pillow Image对象
img = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
# 将帧粘贴到画布上
canvas.paste(img, ((2560 - 1920) // 2, (1440 - 1080) // 2))
# 显示画布
canvas.show()
# 暂停一段时间,以达到视频帧率
cv2.waitKey(int(1000/fps))
else:
break
# 释放视频资源
cap.release()
cv2.destroyAllWindows()
```
你需要将`/path/to/videos`替换为你的视频文件夹路径,将`video1.mp4`、`video2.mp4`、`video3.mp4`替换为你要处理的视频文件名。
这段代码会遍历每个视频,读取视频的帧率和尺寸,然后遍历每个帧,将其resize到1920x1080并粘贴到2560x1440的画布上,并显示画布。你可以按任意键停止当前视频的播放,然后继续播放下一个视频。