一、录制视频
  1. 获取摄像头操作
    camObj = cv2.VideoCapture(0) :0为默认计算机默认摄像头,多个摄像头依次后面1、2、3

  2. 检查是否成功初始化:
    camObj.isOpen() #True成功 False失败,同理打开视频
    失败可尝试:camObj.open()

  3. 读取一帧图片:
    ret, frame = camObj.read()
    返回值:
    ret: 代表当前帧是否读取成功
    frame: 带表当前帧数据,是一个多维数组,若读取失败则为None

  4. 色彩空间的转换:cv2.cvtColor( )
    生活中大多数看到的彩色图片都是RGB类型,但是在进行图像处理时,需要用到灰度图、二值图、HSV、HSI等颜色制式
    opencv中有多种色彩空间,包括 RGB、HSI、HSL、HSV、HSB、YCrCb、CIE XYZ、CIE Lab8种,使用中经常要遇到色彩空间的转化,以便生成mask图等操作。
    常用两种:
    1-BGR和灰度图的转换使用 cv2.COLOR_BGR2GRAY
    2-BGR和HSV的转换使用 cv2.COLOR_BGR2HSV
    gray = cv2.cvtColor(frame , cv2.COLOR_BGR2GRAY)
     
    flags = [i for i in dir(cv2) if i.startswith('COLOR_')]
    print(flags) #查看支持的所有转换类型

  5. 将图片沿X或者Y轴翻转:参数0 垂直翻转(Y轴),1水平(X轴),-1为水平加垂直翻转(XY)
    cv2.flip(frame,0)

  6. 设置编码格式、分辨率、录制FPS、文件名等参数
    fourcc = cv2.VideoWriter_fourcc(*'XVID') #使用XVID编码器
    videoWriterObj = cv2.VideoWriter(pathName, fourcc, 25.0, (640,480)) #四个参数:保存文件名、编码器、帧率、视频分辨率

  7. 保存视频(一帧帧图片)
    第六步当中生成了一个videoWriterObj对象,该对象自己设置
    创建一个VideoWrite的对象,确定输出文件名,指定FourCC编码,播放频率和帧的大小,最后是isColor标签True为彩色。
    FourCC是一个4字节码,用来确定视频的编码格式。
    Fedora : DIVX , XVID , MJPG , X264 , WMV1 , WMV2
    XVID是最好的,MJPG是高尺寸视频,X264得到小尺寸视频
    Windows : DIVX
    使用该对象来将一帧帧图像保存到文件中去
    videoWriterObj .write(frame) #写入读取的当前帧

注:视频编码器、格式

视频文件格式,即视频文件的后缀,如mp4,avi等等,主要为帮助系统的程序知道应该使用何种程序打开该文件;这就是说如果你把一个视频格式的文件后缀从avi改成mp4,并不意味该文件就变成了mp4格式。
视频封装格式则是一种视频封装容器。什么意思呢?在视频文件中同时含有视频部分、音频部分等等;那么视频封装容器则一种可以把多种视频数据放在一起的一个大盒子。这个盒子就是我们常说的视频格式,例如AVI(后缀.avi)格式、MPEG(后缀.mpg .mpeg .mpe .dat .vob .asf .3gp .mp4)格式、REAL Video(后缀.rmvb)格式、Flash Video(后缀.flv)格式等等。
那么视频编码器又是什么呢?视频编码器是指能够对数字视频进行压缩存储和解压缩的程序或设备。目前场景的编码器有H.26X系列(目前最流行的是H.264和H.265)和MPEG系列(目前最流行的是MPEG-4第十部分,即H.264)。上文代码中提到的XVID(旧称为DIVX)是一个开放源代码的MPEG-4视频编解码器.

OpenCV录制视频,播放视频的更多相关文章

  1. opencv —— 读取并播放视频 VideoCapture capture("C:/1.mp4");

    VideoCapture 读入视频的方法有两种: ①先实例化再初始化:VideoCapture capture:capture.open("C:/Users/齐明洋/Desktop/1.mp ...

  2. OpenCV播放视频带滚动条(3)

      演示 :一个带有滚动条的播放视频的代码.   #include "stdafx.h" #include <opencv2/core/core.hpp> #inclu ...

  3. ffmpeg和opencv 播放视频文件和显示器

    ffmpeg它是基于最新版本,在官网下载http://ffmpeg.zeranoe.com/builds/.编译时VS2010配置相关头文件及库的路径就可以.opencv的搭建參考上一个博客. 首先简 ...

  4. 小程序升级实时音视频录制及播放能力,开放 Wi-Fi、NFC(HCE) 等硬件连接功能

    “ 小程序升级实时音视频录制及播放能力,开放 Wi-Fi.NFC(HCE) 等硬件连接功能.同时提供按需加载.自定义组件和更多访问层级等新特性,增强了第三方平台的能力,以满足日趋丰富的业务需求.” 0 ...

  5. OpenCV教程【002 VideoCapture加载并播放视频】

    #include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace c ...

  6. VS2013 MFC opencv 播放视频

    看网上有很多人用的还是CvvImage类,但是Opencv3.0已经没有CvvImage这个类了.百度得之可以使用以前的类,稍作修改就可以了. 头文件: #pragma once #ifndef CV ...

  7. 使用VideoView播放视频

    为了在Android应用中播放视频,Android提供了VideoView组件,它就是一个位于android.widget包下的组件,它的作用与ImageView类似,只是ImageView用于显示图 ...

  8. 利用FluorineFX录制音频与视频

    要做一个完整的录制程序,处理RPC请求的类不仅要继承ApplicationAdapter,还要继承IStreamService接口,该接口定义了play(),pause(),publish(),cre ...

  9. 使用OpenCV玩家营造出一个视频控制(没有声音)

    说明:OpenCV计算机视觉库,所以使用的图像或视频处理,因此,没有任何声音在播放视频的临时 软件:使用OpenCV制播放器(无声音) 功能说明:新建播放窗体.加入进度条能够拖动视频播放. 流程图: ...

  10. TextureView+SurfaceTexture+OpenGL ES来播放视频(一)

    引自:http://www.ithao123.cn/content-8733143.html 最近发现视频直播类应用层出不穷,比如233手游直播,蓝鲸直播,微录客等等什么的,连android界大神老罗 ...

随机推荐

  1. C中关键字inline用法

    一.什么是内联函数 在C语言中,如果一些函数被频繁的调用,不断地用函数入栈,即函数栈,则会造成栈空间或者栈内存的大量消耗,为了解决这个问题,特别的引入了inline关键字,表示为内联函数.栈空间指的是 ...

  2. 钉钉与wcp知识库集成工具

    dingding-wcp 钉钉(dingding)的wcp(知识库)集成通知,非常简单的小工具.(wcp版本 V.free.4.0.4) git: https://gitee.com/chejiang ...

  3. SpringBoot扩展点之三:SpringBootServletInitializer扩展

    SpringBootServletInitializer 熟悉了SpringApplication的原理之后,我们再来了解SpringBootServletInitializer的原理就比较容易了. ...

  4. ElasticSearch中碰到的C10K问题

    Elasticsearch基于Netty解决C10K问题背后的原理是JAVA NIO中的IO多路复用机制,涉及到三大"组件":SelectableChannel.Selector. ...

  5. VueTreeselect出现unknown解决方法

    VueTreeselect 控件显示[unknown]如图: treeselect 绑定的值需要与options输出的id相对应,若是空值,请不要给空字符串,0,等,因为会出现unknown,并且当选 ...

  6. python修改linux日志(logtamper.py)

    原作者原文:https://blog.csdn.net/qq_27446553/article/details/51434451 躲避管理员who查看 python logtamper.py -m - ...

  7. 《MySQL实战45讲》学习笔记2——MySQL的日志系统

    一.日志类型 逻辑日志:存储了逻辑SQL修改语句 物理日志:存储了数据被修改的值 二.binlog 1.定义 binlog 是 MySQL 的逻辑日志,也叫二进制日志.归档日志,由 MySQL Ser ...

  8. JSON数据格式:以及XML文件格式,YML文件格式,properties文件格式

    JSON数据格式:以及XML文件格式,YML文件格式,properties文件格式   数据格式: json数据格式:属于轻量级数据格式,是javascript的一种描述数据的格式.具有易于解析,语法 ...

  9. 类例程_c#战斗程序(窗体版)

    战士类代码: class Fight { String name; int attack, speed, crit, armor;// 生命.攻击力,攻速,暴击,护甲 public int life; ...

  10. Java 最常见 200+ 面试题全解析:面试必备

    本文分为十九个模块,分别是: Java 基础.容器.多线程.反射.对象拷贝.Java Web .异常.网络.设计模式.Spring/Spring MVC.Spring Boot/Spring Clou ...