【OpenCV学习笔记2】基础:读取、播放、保存视频

news/2025/2/25 19:00:53

文章目录

    • 1. 读取摄像头
    • 2. 读取视频
    • 3. 保存视频
    • References

使用 OpenCV 也可以非常方便地读取、播放、保存视频,下面分别介绍。

1. 读取摄像头

VideoCapture 类用于从视频、图像序列、摄像头获取输入。先看如何读取摄像头输入:

import cv2

capture = cv2.VideoCapture(0) # 创建一个视频捕获对象,参数为摄像头编号

print('width = ', capture.get(3), ' height = ', capture.get(4)) # 查看摄像头参数

while True:
    ret, frame = capture.read() # 读取一帧,ret表示是否读取成功
    cv2.imshow('video 0', frame) # 显示一帧

    if cv2.waitKey(1) == ord('q'): # 等待1毫秒,检测到Q键按下则退出
        break

构造函数:cv.VideoCapture(index[, apiPreference])

第一个参数是摄像头的设备号,一般默认为 0 ,即第一个摄像头,如果有多个摄像头,可以设为 1、2、3 等等。

第二个参数指定用于读取视频的后端API,如 cv::CAP_FFMPEGcv::CAP_IMAGEScv::CAP_DSHOW(参考 VideoCaptureAPIs)。

2. 读取视频

读取视频文件例子:

import cv2

capture = cv2.VideoCapture('test.mp4')

while capture.isOpened():
    ret, frame = capture.read()
    cv2.imshow('test video', frame)
    if cv2.waitKey(1) == ord('q'):
        break

构造函数:cv.VideoCapture(filename[, apiPreference])

第一个参数是文件名,可以是如下几类:

  • 视频文件名 (如 video.avi)
  • 图像序列模式串 (如 img_%02d.jpg, 会依次读取img_00.jpg, img_01.jpg, img_02.jpg, …)
  • 视频流URL (如 protocol://host:port/script_name?script_params|auth)
  • GStreamer pipeline string in gst-launch tool format in case if GStreamer is used as backend

前两种较简单,后两种可自己尝试。第二个参数用于指定读取视频的后端API。

3. 保存视频

VideoWriter 类用于保存视频。把摄像头输入保存为视频文件的例子:

import cv2

capture = cv2.VideoCapture(0)

fourcc = cv2.VideoWriter_fourcc(*'MJPG')
output = cv2.VideoWriter('videos/output.avi', fourcc, 30, (640, 480))

while True:
    ret, frame = capture.read()
    if ret:
        output.write(frame)
        cv2.imshow('camera', frame)
        if cv2.waitKey(1) == ord('q'):
            break
    else:
        break

VideoWriter_fourcc 函数用于通过字符创建 fourcc 码,该编码用于指示一个视频的编码压缩格式等信息。什么是 fourcc 码可以参考:What is a FOURCC?

VideoWriter 是一个用于写视频的类。第一个参数是文件名, 第二个参数是 fourcc 码,第三个参数为帧率,第四个参数为视频大小。


References

  1. OpenCV: cv::VideoCapture Class Reference
  2. OpenCV: cv::VideoWriter Class Reference
  3. What is a FOURCC?
  4. Opencv中FOURCC详解_持久决心的博客-CSDN博客
  5. Video Codecs by FOURCC - fourcc.org
  6. Getting Started with Videos

QQ交流群:点击链接加入群聊【Python练习生】532232743
我的知乎:AXin啊
公众号:请叫我AXin
在这里插入图片描述


http://www.niftyadmin.cn/n/712474.html

相关文章

Django框架之图书管理系统(二)

该篇文章介绍多对多的关系介绍 一、数据库设计 一个作者对应多个书籍 一个书籍对应多个作者 总结也就是多对多之间的关系 通过模型类创建多对多之间的关系表的时候,Django框架通过ORM创建三个表,分别是作者表,书籍表,记录作者id对…

【OpenCV学习笔记3】基础:图像基本操作

文章目录1. 访问像素值并修改2. 获取宽、高、通道数、像素总数3. 获取ROI4. 拆分和合并通道5. 改变颜色空间References我们来熟悉一下 OpenCV 中对图像的基本操作,本文包括以下几个方面: 访问像素值并修改获取宽、高、通道数、像素总数获取ROI拆分和合并…

linux下日语语言包安装

光盘挂载: mount /dev/cdrom /mnt/cdrom cd /mnt/cdrom/Server 以oel5.5为例: rpm -ivh fonts-japanese-0.20061016-4.el5.noarch.rpm rpm -ivh m17n-db-japanese-1.3.3-48.el5.noarch.rpm

洛谷P2347-砝码称重(DP)

题目描述: 设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重≤1000), 输入格式: 输入方式:a1,a2,a3,a4,a5,a6 (表示1g砝码有a1​个,2g砝码有a2​个,…,20g…

oracle 转 mysql 乱码问题吗_mysql配置的相关问题 以及oracle转mysql遇到的坑

解压版本回没有my.ini文件自己创建 可以复制my-default.ini文件,# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html# *** DO NOT EDIT THIS FILE. Its a template which will be cop…

视频监控管理立法成必然 个人诉求受重视

近日,《云南省公共安全视频图像信息系统管理规定》经云南省人民政府第92次常务会议通过,将于2016年10月1日起施行,与此同时,近几日关于广州市拟对《广州市公共安全视频系统管理规定》进行修改的讨论在网络上也成为焦点&#xff0c…

Vijos1111-小胖的水果(LCS)

描述: xuzhenyi到大同水果店去买水果,但老板huyichen告诉他每次只能买一种,但是xuzhenyi想吃两种,于是在讨价还价之后,huyichen说只要xuzhenyi能把他想要的两种水果合并成一种,就能成功。你能帮他吗&#x…

【OpenCV学习笔记4】基础:几何变换-改变大小

文章目录1. 按比例缩小2. 放大3. 只更改高或宽4. 缩放到指定大小References1. 按比例缩小 我们使用 resize 函数改变图像大小,例如将图像按比例缩小为原来的80%: import cv2img cv2.imread(images/test.jpg)width img.shape[1] height img.shape[0]…