opencv-videoWriter写视频操作(三)

本文介绍了如何使用OpenCV库在Python中读取视频并将其保存为不同格式(如XVID,MJPG)的文件,包括设置编码、帧率和视频尺寸等关键步骤。
摘要由CSDN通过智能技术生成
# cv.VideoWrite(filename,fourcc,fps,frameSize,isColor = Ture) 将多个视频帧保存为视频文件
    filename:视频保存路径;
    fourcc可选参数: DIVX;XVID;MJPG;X264;WMV1;WMV2;常用:X264常用于小视频;MJPG
    frame:帧数;
    size:窗口大小;
    isColor(可选,默认为True): 是否原彩
    步骤一: 先设置fourcc: fourcc = cv.VideoWriter_fourcc(*'MJPG')  # 括号内也可以这么写:(‘M','J','P','G')
    步骤二: 创建对象: vw = cv.VideoWriter("写入目标文件",fourcc,fps,(size_w,size_h))注:size设置大小必须符合采集摄像头分辨率或者视频分辨率。
    步骤三: 在cap.read()读取到视频帧后,可以调用vw.writer(frame)写入到指定目标文件。
    步骤四: 释放vw对象:vw.release()
# cap.isOpened()判断摄像头是否打开,返回布尔值
    实现一个读取视频及保存到指定目录下的小案例:
        
import cv2 as cv
#--------------------------------
# 创建VideoWriter为写多媒体文件
fourcc = cv.VideoWriter_fourcc(*'XVID')
vw = cv.VideoWriter('./video/out.mp4', fourcc, 50, (1280, 720))

# 创建窗口
cv.namedWindow('video', cv.WINDOW_NORMAL)

# 获取视频设备
# cap = cv.VideoCapture(0)# 获取摄像头,默认为0
cap = cv.VideoCapture('./video/cars.mp4')# 根据视频获取图片,唯一的变化仅参数改为视频路径

while True:
    # 判断摄像头是否打开
    # if cap.isOpened():
        # 从摄像头读取视频帧
        ret, frame = cap.read()# 返回俩参数,参数一:ret表示意思是否读取到视频帧,参数二是读到的视频帧
        # 显示视频帧
        cv.imshow('video', frame)
        cv.resizeWindow('video', 640, 360)
        if ret:
            # 写数据到多媒体文件
            vw.write(frame)

            key = cv.waitKey(1)
            if key & 0xFF == ord('q'):
                break
        else:
            print('读取完成或未读到数据')
            break
    # else:
    #     print('摄像头打开失败')
    #     break

# 释放Videocapture
cap.release()
# 释放vw资源
vw.release()
# 释放窗口
cv.destroyAllWindows()

OpenCvSharp是一个C#接口,用于访问OpenCV库的功能。OpenCV是一个开源的计算机视觉和机器学习软件库,广泛用于图像处理和视频分析任务。 在使用OpenCvSharp进行视频处理时,VideoWriter类是用来进行视频文件的操作的。使用VideoWriter可以将连续的图像帧保存为视频文件,或者输出到视频流中。VideoWriter类能够支持多种视频编码格式和压缩方法,常见的编码格式包括AVI、MPEG、WMV等。 创建VideoWriter对象时,需要指定输出视频的名称、视频编码格式、帧率(fps)以及视频的尺寸(width x height)。在视频帧之前,通常需要初始化VideoWriter实例,可以通过设置合适的编码器和视频属性来完成初始化。一旦初始化完成,就可以连续入帧到VideoWriter对象中,最后不要忘记释放VideoWriter资源,这通常是通过调用其Dispose方法来完成的。 下面是一个简单的代码示例,展示了如何使用OpenCvSharp的VideoWriter类: ```csharp using OpenCvSharp; using System; class VideoWriterExample { public static void Main() { // 创建VideoWriter实例 // 第一个参数是输出视频的文件名,第二个参数是编码器的FourCC代码,第个参数是帧率,第四个和第五个参数是视频的宽度和高度 using (var videoWriter = new VideoWriter("output.avi", VideoWriter.FourCC('M', 'J', 'P', 'G'), 20, new Size(640, 480))) { if (!videoWriter.IsOpened()) throw new Exception("Could not open the video writer."); // 读取或创建视频帧 using (var frame = new Mat()) { // 假设我们有某种方式获取帧,这里仅为示例 // ... (帧获取代码) // 入帧到视频 videoWriter.Write(frame); } } Console.WriteLine("Video has been saved successfully!"); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值