在工作中遇到一个实现问题,将视频画面切割成自己需要的那部分
【比如要将1920*1080的视频取出起点是(0,0),分辨率为456*123的一部分视频画面】
在找了很多案例以后自己写出这个最简单的可用demo,在此记录分享给大家。
#! /usr/bin/env python
#coding=utf-8
import cv2
import numpy as np
import cv2
import tkinter
def videoJDK(cx,cy,vw,vh,url_1,url_2):
videoCapture = cv2.VideoCapture(url_1) # 从文件读取视频
# 判断视频是否打开
if (videoCapture.isOpened()):
print(Open)
else:
print(Fail to open!)
fps = videoCapture.get(cv2.CAP_PROP_FPS) #获取原视频的帧率
size = (int(vw), int(vh))#自定义需要截取的画面的大小
videoWriter = cv2.VideoWriter(url_2, cv2.VideoWriter_fourcc(M, J, P, G), fps, size)
success, frame = videoCapture.read()#读取第一帧
ints = int(fps)
while success:
print(frame)
frame = frame[cx:cx+vw,cy:cy+vh]#截取画面
# cv2.imshow("Oto Video", frame) #显示
# cv2.waitKey(int(1000/ints)) #延迟
videoWriter.write(frame) #写视频帧
success, frame = videoCapture.read() #获取下一帧
videoCapture.release()
cx = 0; #起点x
cy = 0; #起点y
vw = 540; #宽
vh = 540; #高
url_1 = "F://123.avi" # 源视频
url_2 = "F://12334.avi" # 转换后视频
videoJDK(cx,cy,vw,vh,url_1,url_2)