视频操作
视频操作
视频读写
OpenCV中我们要获取一个视频,需要创建一个VideoCapture对象,指定你要读取的视频文件。(这里指定摄像头也可以)
API:
cv.VideoCapture(filepath)
filepath:视频文件路径
获取视频的某些属性。
实例.get(propId)
propld:从0到18的数字,每个数字表示视频的属性。
修改视频的属性信息:cap.set(propId,value)
proidId:属性的索引。
value:修改后的属性值。
判断图像是否读取成功:实例.isOpened()
获取视频的一帧图像:ret,frame=实例.read()
ret:若获取成功返货True,失败返回false
frame:获取到的某一帧的图像。
调用cv.imshow()显示图像,在显示图像时使用cv.waitkey()设置适当的持续时间,如果太低视频会播放的非常快,如果太高就会播放的非常慢。通常情况下设置25ms就可以了。
最后利用cap.realease()将视频释放掉。
视频保存
-
创建时评写入的对象:out=cv.VideoWriter(filename,fourcc,fps,frameSize)
参数:
filename:视频保存的位置
fourcc:指定视频编解码器的4字节代码
fps:帧率
frameSize:帧大小。
设置视频的编解码器,如下所示:retval=cv.VideoWriter_fourcc(c1,c2,c3,c4)
c1-c4:是视频编解码器的4字节代码,在fourcc.org中找到可用代码列表,与平台紧密相关。
利用cap.read()获取视频中的每一帧图像,并使用out.write()将某一帧图像写入视频中。
利用cap.release()和out.release()释放资源。
视频追踪
meanshift
原理很简单,就是假设有一堆点集,有一个窗口,需要移动这个窗口到点集密度最大的区域当中。
API:
cv.meanShift(probImage,window,criteria)
provImage:ROI区域,即目标的直方图的反向投影。
window:初始搜索窗口,就是定义ROI的rect。
criteria:确定窗口搜索停止的准则,主要有迭代次数达到设置的最大值 ,窗口中心的漂移值大于某个设定的限值等。
实现meanshift的主要流程:1。读取视频文件;2。感兴趣区域设置;3。计算直方图;4。目标追踪。
Camshift
该算法用于解决meanshift算法中窗口固定大小的问题。可随着跟踪目标的大小变化实时调整搜索窗口的大小。

浙公网安备 33010602011771号