Python Opencv 之 简单的视频裁剪功能的实现
目录
一、简单介绍
Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。Python是一种解释型脚本语言,可以应用于以下领域: Web 和 Internet开发、科学计算和统计、人工智能、教育、桌面界面开发、软件开发、后端开发、网络爬虫。
本节介绍,通过使用 opencv 和 tesseract 进行简单的文字识别。
二、实现原理
1、读取视频
2、size 设置视频的裁剪大小
3、创建 VideoWriter ,写入 指定区域的视频数据
三、注意实现
1、注意 size 设置和 frame[0:x, 0:y] 要有一致性,不然可能显示、保存不了视频
2、frame 设置,导致这个方法好像有局限性
3、使用 python 3.6.7,opencv-python 为 4.2.0.32
四、效果预览
五、实现步骤
这里实现截取视频的左半部分为例
1、打开 Pycharm,新建一个工程
2、这里是选择 python 3.6,安装 opencv ,创建的工程
3、选中工程名称,右键创建一个 python 脚本
4、编写脚本,实现读取指定视频,进行半屏裁剪,并保存
5、运行脚本,效果如上图
六、关键代码
import cv2 as cv
def main():
# 导入视频文件,参数:0 自带摄像头,1 USB摄像头,为文件名时读取视频文件
video_caputre = cv.VideoCapture(r"D:\CloudMusic\MV\排骨教主 - 入画.mp4")
# 获取读入视频的参数
fps = video_caputre.get(cv.CAP_PROP_FPS)
width = video_caputre.get(cv.CAP_PROP_FRAME_WIDTH)
height = video_caputre.get(cv.CAP_PROP_FRAME_HEIGHT)
print("fps:", fps)
print("width:", width)
print("height:", height)
# 定义截取尺寸,后面定义的每帧的h和w要于此一致,否则视频无法播放
# 注意 这里是高宽 (height, width)
size = (int(height), int(width / 2))
# 创建视频写入对象
videp_write = cv.VideoWriter("videoFrameTarget.avi", cv.VideoWriter_fourcc('M', 'J', 'P', 'G'), fps, size)
# 读取视频帧,然后写入文件并在窗口显示
success, frame_src = video_caputre.read()
while success and not cv.waitKey(1) == 27: #读完退出或者按下 esc 退出
# [width, height] 要与上面定义的size参数一致,注意参数的位置
frame_target = frame_src[0:int(width/2), 0:int(height)]
# 写入视频文件
videp_write.write(frame_target)
# 显示裁剪的视频和原视频
cv.imshow("video", frame_target)
cv.imshow("Video_src", frame_src)
# 不断读取
success, frame_src = video_caputre.read()
print("视频裁剪完成")
# 销毁窗口,释放资源
cv.destroyWindow("video")
cv.destroyWindow("Video_src")
video_caputre.release()
if __name__=="__main__":
main()