永兴的笔记-OpenCV-14视频基本操作 1

在这里插入图片描述

一、什么是视频?

1、视频的基本概念:
视频(Video)泛指将一系列静态影像以电信号的方式加以捕捉、纪录、处理、储存、传送与重现的各种技术。连续的图像变化每秒超过24帧(frame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面;看上去是平滑连续的视觉效果,这样连续的画面叫做视频。
简单来说视频就是很多张照片连续切换。
2、视频的基本属性:

  • 画面更新率(FPS):
    Frame rate中文常译为“画面更新率”或“帧率”,是指视频格式每秒钟播放的静态画面数量。
  • 分辨率
    • 各种电视规格分辨率比较视频的画面大小称为“分辨率”。数位视频以像素为度量单位,而类比视频以水平扫描线数量为度量单位。
    • 新的高清电视(HDTV)分辨率可达1920×1080p60,即每条水平扫描线有1920个像素,每个画面有1080条扫描线,以每秒钟60张画面的速度播放。
    • 3D视频的分辨率以voxel(volume picture element,中文译为“体素”)来表示。例如一个512×512×512体素的分辨率用于简单的3D视频,可以被包括部分PDA在内的电脑设备播放。
  • 长宽比(Aspectratio):
    是用来描述视频画面与画面元素的比例。
    • 传统的电视屏幕长宽比为4:3(1.33:1)。
      HDTV的长宽比为16:9(1.78:1)。而35mm胶卷底片的长宽比约为1.37:1。
    • 虽然电脑荧幕上的像素大多为正方形,但是数字视频的像素通常并非如此。例如使用于PAL及NTSC讯号的数位保存格式CCIR 601,以及其相对应的非等方宽萤幕格式。因此以720x480像素记录的NTSC规格DV影像可能因为是比较“瘦”的像素格式而在放映时成为长宽比4:3的画面,或反之由于像素格式较“胖”而变成16:9的画面。
  • 压缩技术:
    视频压缩技术(仅适用数位讯号)
    自从数位信号系统被广泛使用以来,人们发展出许多方法来压缩视频串流。由于视频资料包含了空间的与时间的冗余性,所以使得未压缩的视频串流以传送效率的观点来说是相当糟糕的。
    总体而言,空间冗余性可以借由“只记录单帧画面的一部分与另一部分的差异性”来减低;这种技巧被称为帧内压缩(intraframe compression)。并且与图像压缩密切相关,而时间冗余性则可借由“只记录两帧不同画面间的差异性”来减低;这种技巧被称为帧间压缩(interframe compression),包括运动补偿以及其他技术。目前最常用的视频压缩技术为DVD与卫星直播电视所采用的MPEG-2,以及因特网传输常用的MPEG-4。
  • 视频编码 :
    所谓视频编码方式就是指通过压缩技术,将原始视频格式的文件转换成另一种视频格式文件的方式。视频流传输中最为重要的编解码标准有国际电联的H.261、H.263、H.264,运动静止图像专家组的M-JPEG和国际标准化组织运动图像专家组的MPEG系列标准,此外在互联网上被广泛应用的还有Real-Networks的RealVideo、微软公司的WMV以及Apple公司的QuickTime等。
  • 视频格式:
    视频格式实质是视频编码方式,可以分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类。尽管后者在播放的稳定性和播放画面质量上可能没有前者优秀,但网络流媒体影像视频的广泛传播性使之正被广泛应用于视频点播、网络演示、远程教育、网络视频广告等互联网信息服务领域。
    视频格式主要有rm,rmv,mpeg1-4 mov mtv dat wmv avi 3gp amv dmv flv mp4,这类格式可是影像阵营中的一个大家族,也是我们平时所见到的最普遍的一种视频格式。

二、OpenCV的视频操作:
1、对于视频的读取,OpenCV提供了接口VideoCapture。要想编程实现视频的读取与显示,需要熟悉一下该类的构造函数和成员函数。
Video = cv2.VideoCapture(index)

index作用
0表示摄像头编号,0一般是本机摄像头
"路径+文件名“打开视频文件
“网络地址“打开网络摄像头

Video.isOpened()
判断对象是否创建成功

  • 返回布尔值(true or false)

isOpened , Image = Video.read()
读取一帧视频
返回:

  • isOpened 是否读取成功
  • Image 图像

Video.get(param)
在这里插入图片描述

import cv2
Video = cv2.VideoCapture(0) #初始化本机摄像头
while(Video.isOpened()): #成功则开始读取
    isO , VImg = Video.read() #读取视频帧
    if isO : #成功则显示
        cv2.imshow("Video",VImg)
    if cv2.waitKey(10) == ord("q"): #每帧延时10ms并判断是否按下q键
        break
Video.release() #关闭摄像头
cv2.destroyAllWindows()

2、视频的保存:
OpenCV提供了接口VideoWriter,要想编程实现保存视频,需要熟悉一下该类的构造函数和成员函数。

writer = cv2.VideoWriter( filename, fourcc, fps, frameSize,size ,isColor)

  • filename : 保存的文件名
  • fourcc: 编解码器4字代码
    cv2.VideoWriter_fourcc
    设置视频格式:
fourcc描述
cv2.VideoWriter_fourcc(‘I’,‘4’,‘2’,‘0’)4:2:0色度子采样。兼容性好,但文件较大。文件扩展名.avi。
cv2.VideoWriter_fourcc(‘P’,‘I’,‘M’,‘1’)MPEG-1编码类型,文件扩展名.avi。随机访问,灵活的帧率、可变的图像尺寸、定义了I-帧、P-帧和B-帧 、运动补偿可跨越多个帧 、半像素精度的运动向量 、量化矩阵、GOF结构 、slice结构 、技术细节、输入视频格式。
cv2.VideoWriter_fourcc(‘X’,‘V’,‘I’,‘D’)–MPEG-4编码类型,视频大小为平均值,MPEG4所需要的空间是MPEG1或M-JPEG的1/10,它对运动物体可以保证有良好的清晰度,间/时间/画质具有可调性。文件扩展名.avi。
cv2.VideoWriter_fourcc(‘T’,‘H’,‘E’,‘O’)—OGGVorbis,音频压缩格式,有损压缩,类似于MP3等的音乐格式。,兼容性差,件扩展名.ogv。
cv2.VideoWriter_fourcc(‘F’,‘L’,‘V’,‘1’)FLV是FLASH VIDEO的简称,FLV流媒体格式是一种新的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等缺点。文件扩展名为.flv。
  • frameSize: 视频帧大小
  • size:视频的宽和高
  • isColor: 布尔值 (true or false ) 视频是否为彩色

writer.writer(image)
保存图片到视频文件对象

import cv2
Video = cv2.VideoCapture(0) #初始化本机摄像头
fps = Video.get(5)  #获取原视频帧率
size = (int(Video.get(3)),int(Video.get(4)))
writer=cv2.VideoWriter("output.avi",cv2.VideoWriter_fourcc(*'XVID'),fps,size)#'MJPG'对windows没有用
while(Video.isOpened()): #成功则开始读取
    isO , VImg = Video.read() #读取视频帧
    if isO : #成功则显示
        cv2.imshow("Video",VImg)
        writer.write(VImg)  #逐帧保存
    if cv2.waitKey(1) == ord("q" ):
        break
Video.release() #关闭摄像头
cv2.destroyAllWindows()

练习题10:

利用摄像头或者喜欢的视频,进行轮廓绘制,并绘制在原视频上进行不间断播放。
评论出你的答案

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值