需要源码和视频请点赞关注收藏后评论区留言私信~~~
获取视频文件的属性
在实际开发中,有时需要获取视频文件的属性,为此,VideoCapture类提供了get方法,语法格式如下
retval=cv2.VideoCapture.get(propId)
retval 获取与propId对应的属性值
propId 视频文件的属性值
VideoCapture类提供视频文件的属性值及其含义如下图所示
视频文件的属性值及其含义
说明如下
1:视频是由大量的,连续的图像组成的额,把其中的每一幅图像称作一帧
2:帧数指的是视频文件中含有的图像总数,帧数越多,视频播放时越流畅
3:在播放视频的过程中,把每秒显示的图像的数量称作帧速率
4:帧宽度指的是图像在水平方向上含有的像素总数
5:帧高度指的是图像在垂直方向上含有的像素总数
下面获取并输出视频文件的指定属性值实战
代码如下
import cv2 video = cv2.VideoCapture("公司宣传.avi") # 打开视频文件 fps = video.get(cv2.CAP_PROP_FPS) # 获取视频文件的帧速率 frame_Count = video.get(cv2.CAP_PROP_FRAME_COUNT) # 获取视频文件的帧数 frame_Width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH)) # 获取视频文件的帧宽度 frame_Height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 获取视频文件的帧高度 # 输出获取到的属性值 print("帧速率:", fps) print("帧数:", frame_Count) print("帧宽度:", frame_Width) print("帧高度:", frame_Height)
下面我们在视频播放窗口动态显示当前视频文件的属性值
编写一个程序,在视频播放窗口动态显示当前视频播放到第几帧和该帧对应视频的第几秒
部分代码如下
import cv2 video = cv2.VideoCapture("公司宣传.avi") # 打开视频文件 fps = video.get(cv2.CAP_PROP_FPS) # 获取视频文件的帧速率 frame_Num = 1 # 用于记录第几幅图像(即第几帧),初始值为1(即第1幅图像) while (video.isOpened()): # 视频文件被打开后 retval, frame = video.read() # 读取视频文件 # 设置“Video”窗口的宽为420,高为300 cv2.namedWindow("Video", 0) cv2.resindow("Video", 420, 300) if retval == True: # 读取到视频文件后 # 当前播到第几帧 cv2.putTet(,frame: " + str(frame_Num), (0, 100), cv2.FNT_HERSHEY_SIMPLEX, 2, (0, 0, 255), 5) # 该帧对应着视频的第几秒 cv2.putTexframe, "second: " + str(round(frame_Num / fps, 2)) + "s", (0, 200), FONT_HERSHEY_SIMPLEX, 2, (0, 0, 255), 5) cv2.imshow("Video", frame) # 在窗口中显示读取到的视频文件 else: # 没有读取到视频文件 break key = cv2.waitKey(50) # 窗口的图像刷新时间为50毫秒 frame_Num += 1 # if key == 27: # 如果按下Esc键 break video.release() # 关闭视频文件 cv2.destroyAllWindows() # 销毁显示视频文件的窗口
创作不易 觉得有帮助请点赞关注收藏~~~