一、录制视频
  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. Spring+Spring+Hibernate环境搭建

    源码地址:https://gitee.com/kszsa/ssht.git 一.引入lib包 pom.xml,引入需要的jar包 <?xml version="1.0" en ...

  2. 码医自学法V2.2(附名老中医)

    这段时间经常有网友微信公众号问我怎么入门'中医' 我贴下我自己的学习方法(仅供参考) 基础回顾:https://www.cnblogs.com/dunitian/p/7483038.html PS:自 ...

  3. [原创]K8Cscan4.0之Base64/HEX密码批量加密解密插件以及源码

    前言 今天抽空更新了Cscan,新增对C#编译的EXE动态调用,新增对PowerShell脚本动态调用(无论是否安装PowerShell) 增加一个字符串列表str.txt,用于存放任意字符串,比如帐 ...

  4. golang gin框架设置静态目录

    router := gin.Default() 第一个参数是api 第二个静态问价的文件夹相对目录 router.StaticFS("/data", http.Dir(" ...

  5. python 计算列表内容出现次数

    """python 计算列表内容出现次数""" #方法一: l = ['a','a','b','c','d','b','b','b'] te ...

  6. Mysql 数据库 表中列的操作

    [1]Mysql数据库中表的列操作 Mysql中关于表中列的操作集语句: -- [1]增加一列 ) DEFAULT NULL COMMENT '目的码区号'; -- [2]增加一列,在dnis_are ...

  7. C#怎么判断字符是不是汉字 汉字和Unicode编码互相转换

    判断一个字符是不是汉字通常有三种方法,第1种用 ASCII 码判断(在 ASCII码表中,英文的范围是0-127,而汉字则是大于127,根据这个范围可以判断),第2种用汉字的 UNICODE 编码范围 ...

  8. .Net Core 获取应用物理路径的常见问题

    如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径. 但是在Asp.Net Cor ...

  9. Java基础篇(下)

    6.Java面向对象的三个特征与含义 三大特征是:继承.封装和多态. (1)继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得 ...

  10. 多态性   类(class)的四则运算

       我们知道c语言中可以整型数据或浮点型等做四则运算,而自己写的类也可做四则运算,是不是感觉奇怪,可以看以下代码是如何完成类之间的四则运算: #include "stdafx.h" ...