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)
# '''
# 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()

你可能感兴趣的:(opencv-python,学习笔记,opencv)