opencv视频读取、保存

直接读取本地摄像头 或者 视频文件

读取并写入

import cv2

# 本地摄像头为0 或者是其他设备索引号,也可以是一个视频文件
# cap = cv2.VideoCapture("./1.mp4")
# 读取摄像头的某一帧
# cap.set(cv2.CAP_PROP_POS_FRAMES,50)  #设置要获取的帧号
cap = cv2.VideoCapture(0)

# 读取视频的属性
# # cap.get(propId) propId 可以是 0 到 18 之间的任何整数,每一个数代表视频的一个属性
# # cap.get(参数)  3是宽、4是高、7是视频总帧数
# print("{} * {}".format(int(cap.get(3)), int(cap.get(4))))
#
# 获取fps 每秒多少张图片
fps = int(cap.get(cv2.CAP_PROP_FPS))
# 获取视频图像宽、高
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# # 可以指定图像的宽高,但要与写入时一致
# size = (224, 224)

# 生成处理后的视频文件
# 根据原视频,生成新视频文件,
# videoWriter = cv2.VideoWriter('v2.avi', cv2.VideoWriter_fourcc('I', '4', '2', '0'), fps, size)
# 上面的新版本的opencv会报错,用这个吧
videoWriter = cv2.VideoWriter(name, cv2.VideoWriter_fourcc(*'mp4v'), fps, size)
# '''
# VideoWriter_fourcc()常见的编码参数
# cv2.VideoWriter_fourcc('M', 'P', '4', 'V')  # MPEG-4编码 .mp4 可指定结果视频的大小
# cv2.VideoWriter_fourcc('X','2','6','4')     # MPEG-4编码 .mp4 可指定结果视频的大小
# cv2.VideoWriter_fourcc('I', '4', '2', '0')  # 该参数是YUV编码类型,文件名后缀为.avi 广泛兼容,但会产生大文件
# cv2.VideoWriter_fourcc('P', 'I', 'M', 'I')  # 该参数是MPEG-1编码类型,文件名后缀为.avi
# cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')  # 该参数是MPEG-4编码类型,文件名后缀为.avi,可指定结果视频的大小
# cv2.VideoWriter_fourcc('T', 'H', 'E', 'O')  # 该参数是Ogg Vorbis,文件名后缀为.ogv
# cv2.VideoWriter_fourcc('F', 'L', 'V', '1')  # 该参数是Flash视频,文件名后缀为.flv
# '''

# .isOpened() 如果为真,说明可以读取
while cap.isOpened():
    # 逐帧读取
    ret, frame = cap.read()

    # 没有下一帧,关闭循环
    if not ret:
        break

    # 转灰度图
    # gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # 垂直反转  1水平翻转、0垂直翻转、-1水平垂直翻转
    # frame = cv2.flip(frame, 0)

    # 缩放图像(宽、高)
    # frame = cv2.resize(frame, size)

    # 写入一帧
    videoWriter.write(frame)

    cv2.imshow('frame', frame)
    # 按q退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默执_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值