python - 如何正确使用 OpenCV VideoWriter?
问题描述
我想裁剪视频的一个区域并保存它。我使用下面的代码来做到这一点。
import cv2
cap = cv2.VideoCapture('input.avi')
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
out = cv2.VideoWriter('output.avi', fourcc, 25, (1280, 720))
while True:
ret, image_np = cap.read()
if not ret:
break;
roi = image_np[300:1020, 0:1280]
out.write(roi)
cap.release()
out.release()
视频文件已创建,我可以在媒体播放器中观看,但如果想在 python 中读取此文件,我会收到一条错误消息。
import cv2
cap = cv2.VideoCapture('output.avi')
_, image_np = cap.read()
进程以退出代码 -1073741819 (0xC0000005) 结束
我认为问题出在我制作的视频上,但我不确定。
解决方案
cv2.VideoWriter
期望框架的大小与您编写的框架相同。roi
形状不(1280, 720)
。
import cv2
cap = cv2.VideoCapture('input.avi')
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
out = cv2.VideoWriter('output.avi', fourcc, 25, (1280, 720))
writerInit = False
while True:
ret, image_np = cap.read()
if not ret:
break;
roi = image_np[300:1020, 0:1280]
if(not writerInit):
h,w,_ = roi.shape
out = cv2.VideoWriter('output.avi', fourcc, 25, (w, h))
writerInit = True
out.write(roi)
cap.release()
out.release()
推荐阅读
- angular - 为什么在我的订阅设置后没有发生新的 mousedown 事件时触发我的 mousedown 订阅?
- python - 为什么我得到'NameError:自由变量'???' 在封闭范围内分配之前引用'?
- c++ - (C++) 当函数返回类或结构等数据时,我想返回错误或错误数据
- vba - 理解其他人宏中将标题大小写应用于文本的 OR 语句
- ios - Swift 包管理器中的可本地化字符串
- swift - 如何在 tableview 控制器中有两个 tableview?
- php - htaccess 在子目录中的 Wordpress 中返回 404(桌面可以,移动 404)
- xml - doxygen 无法将项目信息输出到 xml 文件
- javascript - 如何检查 React 树,查看 Internet Explorer 11 中组件的属性和状态?
- kendo-ui - Kendo UI 网格支持 OData v4 $filter IN 运算符?