一、基础入门下------------视频处理

12 篇文章 0 订阅 ¥9.90 ¥99.00

1.cv2.VideoCapture类函数介绍*

cv2.VideoCpature类的常用函数包括初始化、打开、帧捕获、释放和属性设置等。
1.1初始化
捕获对象 = cv2.VideoCapture(“摄像头ID号或视频文件”)

1.2cv2.VideoCapture.open()和 cv2.VideoCapture.isOpened()函数

一般情况下,使用cv2.VideoCapture()函数即可完成摄像头的初始化。有时,为了防止初始化发生错误,可以使用函数cv2.VideoCapture.isOpened()来检查初始化是否成功。该函数的语法格式为:
ret=cv2.VideoCapture.isOpened()
如果成功,则ret返回值为True
如果不成功,则返回值为False,而此时,就可以用cv2.VideoCapture.open(index/fliename)来打开摄像头,index为雷达的ID号。

1.3捕获帧
ret,imgage = cv2.VideoCpature.read()
image返回的是捕获到的帧,如果没有帧被捕获,则该值为空。
ret:捕获成功则为True,否则为False。

1.4释放
cv2.VideoCapture.release()
不使用时最好释放。

1.5属性设置
1.获取属性
ret = cv2.VideoCapture.get(propID)
示例:ret,cap = cv2.VideoCapture.read(0)
cap.get(cv2.CAP_PROP_FRAME_WIDTH)#获取当前帧对象的宽度
cap.get(cv2.CAP_PROP_FRAME_HEIGTH)#获取当前帧对象的高度

2.设置属性
ret = cv2.VideoCapture.set(propID,value)

示例:ret,cap = cv2.VideoCapture.read(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)#将当前帧对象的宽度设置为640像素。
cap.set(cv2.CAP_PROP_FRAME_HEIGTH,480)#获将当前帧对象的高度设置为480像素

1.6cv2.VideoCapture.grab()函数和cv2.VideoCapture.retrieve()函数
对于单个摄像头的数据,最简单的办法是使用cv2.VideoCapture.read(),但是对于多个摄像头,该函数就无法胜任,这时候需要将read理解为grab()和retrieve()组成。
函数cv2.VideoCapture.grab()用来指向下一帧,其语法格式是:
retval=cv2.VideoCapture.grab()
如果该函数成功指向下一帧,则返回值retval为True。
函数cv2.VideoCapture.retrieve()用来解码,并返回函数v2.VideoCapture.grab()捕获的视频帧。该函数的语法格式为:
retval,image=cv2.VideoCapture.retrieve()
式中:
● image为返回的视频帧,如果未成功,则返回一个空图像。
● retval为布尔型值,若未成功,返回False;否则,返回True。

**

1.7.捕获摄像头视频

**
#使用cv2.VideoCapture类捕获摄像头视频
import cv2 as cv
import numpy as np

#使用电脑内置摄像头
cap = cv.VideoCapture(0)
while(cap.isOpened()):
ret,frame = cap.read()
cv.imshow(“video”,frame)
#等待25ms或esc键被按下
if cv.waitKey(25) & 0xFF ==27:
break

cap.release()
cv.destroyAllWindows()

1.8播放视频文件
import cv2 as cv
import numpy as np

#读取目录下的8.MP4文件
cap = cv.VideoCapture(“8.mp4”)

while(cap.isOpened()):
ret,frame = cap.read()
if ret == False:
break
cv.imshow(“video”,frame)
#等待25ms或esc键被按下
if cv.waitKey(25) & 0xFF ==27:
break

cap.release()
cv.destroyAllWindows()

**

2.VideoWriter类

**
cv2.VideoWriter类可以将图片序列保存成视频文件,也可以修改视频的各种属性,还可以完成对视频类型的转换。

2.1.类函数的介绍
2.1.1构造函数

。该函数的语法格式是:
=cv2.VideoWriter(filename,fourcc,fps,frameSize[,isColor])
*fourcc:表示视频编/解码类型(格式)。
cv2.VideoWriter_fourcc()有4个字符参数。这4个字符参数构成了编/解码器的“4字标记”,每个编/解码器都有一个这样的标记。下面列出几个常用的标记。
● cv2.VideoWriter_fourcc(‘I’,‘4’,‘2’,‘0’)表示未压缩的YUV颜色编码格式,色度子采样为4:2:0。该编码格式具有较好的兼容性,但产生的文件较大,文件扩展名为.avi。
● cv2.VideoWriter_fourcc(‘P’,‘I’,‘M’,‘I’)表示 MPEG-1编码类型,生成的文件的扩展名为.avi。
● cv2.VideoWriter_fourcc(‘X’,‘V’,‘I’,‘D’)表示MPEG-4编码类型。如果希望得到的视频大小为平均值,可以选用这个参数组合。该组合生成的文件的扩展名为.avi。
● cv2.VideoWriter_fourcc(‘T’,‘H’,‘E’,‘O’)表示Ogg Vorbis编码类型,文件的扩展名为.ogv。
● cv2.VideoWriter_fourcc(‘F’,‘L’,‘V’,‘I’)表示Flash视频,生成的文件的扩展名为.flv。

*fps为帧速率。
*framesize为每一帧的长和宽。
*iscolor表示是否为彩色图像

2.1.2write函数
cv2.VideoWriter类中的函数cv2.VideoWriter.write()用于写入下一帧视频。

2.1.3释放
在不需要 cv2.VideoWriter 类对象时,需要将其释放。释放该类对象时所使用的是函数cv2.VideoWriter.release()。

2.2保存视频
步骤:创建对象、写入视频、释放对象等步骤
2.2.1创建对象
设置好参数:1.文件名;2.使用cv2.VideoWriter_fourcc()确定编码/解码类型,比如fourcc = cv2.VideoWriter_forucc(*“XVID”)
3.确定视频的帧速率fps,如fps =20
4.确定视频的长度和宽度,如size=(640,480)

利用上述参数创建对象,如
out = cv2.VideoWriter(fliename,fourcc,fps,size)

2.2.2写入视频
使用函数cv2.VideoWriter.write()将读取到视频帧frame写入到对象out中:out.writr(frame)

2.2.3释放对象
在写入完成后,释放对象out
out.release()

例子:使用cv2.VideoWriter类保存摄像头视频文件
import cv2 as cv
import numpy as np

#定义好视频参数
filename = “save_video.flv”
fourcc = cv.VideoWriter_fourcc(‘X’,‘V’,‘I’,‘D’)
fps = 20
size = (500,500)

#定义对象
output = cv.VideoWriter(“save_video.avi”,fourcc,20,(500,500))
#获取摄像头数据
cap = cv.VideoCapture(0)

while(cap.isOpened()):
ret,frame = cap.read()
if ret == False:
break
cv.imshow(“video”,frame)
output.write(frame)
#等待25ms或esc键被按下
if cv.waitKey(25) & 0xFF ==27:
break

output.release()
cap.release()
cv.destroyAllWindows()

**

3.视频操作基础

**
视频是由视频帧构成的,将视频帧从视频中提取出,对其使用图像处理的方法进行处理,就可以达到处理视频的目的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值