使用python写一个程序,将指定路径下的所有视频进行处理,处理方法为在视频的中心点截取640×352大小的区域,并将其贴到2560×1440黑色画布的左上角,并另存为avi格式
时间: 2024-03-30 16:37:11 浏览: 167
一种基于Python_OpenCV的视频处理办法_视频处理_python_
5星 · 资源好评率100%
好的,以下是基于OpenCV库的Python程序实现:
```python
import cv2
import os
# 设置视频处理参数
VIDEO_WIDTH = 2560
VIDEO_HEIGHT = 1440
CROP_WIDTH = 640
CROP_HEIGHT = 352
def process_video(input_path, output_path):
# 打开视频文件
cap = cv2.VideoCapture(input_path)
# 获取视频帧率、宽度和高度
fps = int(cap.get(cv2.CAP_PROP_FPS))
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 计算中心点坐标
center_x = width // 2
center_y = height // 2
# 创建输出视频编码器
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
out = cv2.VideoWriter(output_path, fourcc, fps, (VIDEO_WIDTH, VIDEO_HEIGHT))
# 处理每一帧
while True:
ret, frame = cap.read()
if not ret:
break
# 截取中心区域
x1 = center_x - CROP_WIDTH // 2
y1 = center_y - CROP_HEIGHT // 2
x2 = x1 + CROP_WIDTH
y2 = y1 + CROP_HEIGHT
cropped = frame[y1:y2, x1:x2]
# 创建黑色画布
canvas = np.zeros((VIDEO_HEIGHT, VIDEO_WIDTH, 3), dtype=np.uint8)
# 将截取出来的区域贴到画布左上角
canvas[0:CROP_HEIGHT, 0:CROP_WIDTH] = cropped
# 写入输出视频
out.write(canvas)
# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()
# 遍历指定路径下的所有视频文件
input_dir = 'path/to/videos'
output_dir = 'path/to/output'
for filename in os.listdir(input_dir):
if filename.endswith('.avi'):
input_path = os.path.join(input_dir, filename)
output_path = os.path.join(output_dir, filename)
process_video(input_path, output_path)
```
你可以将程序中的`VIDEO_WIDTH`和`VIDEO_HEIGHT`设置为你需要的输出视频分辨率,将`CROP_WIDTH`和`CROP_HEIGHT`设置为需要截取的中心区域大小。在程序中遍历指定路径下的所有.avi格式的视频文件,并将它们处理后保存到指定目录下。注意,程序中涉及到的路径需要根据你的实际情况进行修改。
阅读全文