网站开发熬夜么,网站怎么留住用户,网站建设经验交流,艺术家网站源码1 从文件中读取视频并播放 在OpenCV中我们要获取一个视频#xff0c;需要创建一个VideoCapture对象#xff0c;指定你要读取的视频文件#xff1a;
1.创建读取视频的对象
cap cv.VideoCapture(filepath)
参数#xff1a; filepath: 视频文件路径 2.视频的属性信息
2.1…
1 从文件中读取视频并播放 在OpenCV中我们要获取一个视频需要创建一个VideoCapture对象指定你要读取的视频文件
1.创建读取视频的对象
cap cv.VideoCapture(filepath)
参数 filepath: 视频文件路径 2.视频的属性信息
2.1. 获取视频的某些属性
retval cap.get(propId)
参数
propId: 从0到18的数字每个数字表示视频的属性
常用属性有 2.2 修改视频的属性信息
cap.set(propIdvalue)
参数
proid: 属性的索引与上面的表格相对应value: 修改后的属性值
判断图像是否读取成功 isornot cap.isOpened()
若读取成功则返回true否则返回False 获取视频的一帧图像
ret, frame cap.read()
参数
ret: 若获取成功返回True获取失败返回FalseFrame: 获取到的某一帧的图像
调用cv.imshow()显示图像在显示图像时使用cv.waitkey()设置适当的持续时间如果太低视频会播放的非常快如果太高就会播放的非常慢通常情况下我们设置25ms就可以了。 最后调用cap.realease()将视频释放掉
示例
import numpy as np
import cv2 as cv
# 1.获取视频对象
cap cv.VideoCapture(img/01.mp4)
# 2.判断是否读取成功
while(cap.isOpened()):# 3.获取每一帧图像#ret: 若获取成功返回True获取失败返回False #Frame: 获取到的某一帧的图像ret, frame cap.read() # 4. 获取成功显示图像if ret True:cv.imshow(frame,frame)# 5.每一帧间隔为25msif cv.waitKey(25) 0xFF ord(q):break
# 6.释放视频对象
cap.release()
cv.destroyAllwindows() 2 保存视频 在OpenCV中我们保存视频使用的是VedioWriter对象在其中指定输出文件的名称如下所示
创建视频写入的对象
out cv2.VideoWriter(filename,fourcc, fps, frameSize)
参数
filename视频保存的位置fourcc指定视频编解码器的4字节代码fps帧率frameSize帧大小
设置视频的编解码器如下所示
retval cv2.VideoWriter_fourcc( c1, c2, c3, c4 )
参数
c1,c2,c3,c4: 是视频编解码器的4字节代码在fourcc.org中找到可用代码列表与平台紧密相关常用的有在Windows中DIVX.avi 在OS中MJPG.mp4DIVX.aviX264.mkv。
利用cap.read()获取视频中的每一帧图像并使用out.write()将某一帧图像写入视频中。使用cap.release()和out.release()释放资源。
示例
import cv2 as cv# 1. 读取视频
cap cv.VideoCapture(img/01.mp4)# 2. 获取图像的属性宽和高,并将其转换为整数
frame_width int(cap.get(3))
frame_height int(cap.get(4))# 3. 创建保存视频的对象设置编码格式帧率图像的宽高等
out cv.VideoWriter(outpy.avi, cv.VideoWriter_fourcc(M, J, P, G), 10, (frame_width, frame_height))
while (True):# 4.获取视频中的每一帧图像ret, frame cap.read()if ret True:# 5.将每一帧图像写入到输出文件中out.write(frame)else:break# 6.释放资源
cap.release()
out.release()
cv.destroyAllWindows() 总结
读取视频 读取视频cap cv.VideoCapture() 判断读取成功cap.isOpened() 读取每一帧图像ret,frame cap.read() 获取属性cap.get(proid) 设置属性cap.set(proid,value) 资源释放cap.release()
保存视频 保存视频 out cv.VideoWrite() 视频写入out.write() 资源释放out.release()