Python Opencv实践 - 视频文件操作

参考资料:

视频处理VideoCapture类---OpenCV-Python开发指南(38)_python opencv videocapture_李元静的博客-CSDN博客

OpenCV VideoCapture.get()参数详解 - 简书
FOURCC四字符码对照表_4fvcc_Kellybook的博客-CSDN博客

复制代码
import cv2 as cv
import numpy as np

#1.创建VideoCapture对象
#  video = cv.VideoCapture(filePath)
#  filePath: 视频文件路径
# 参考资料:https://blog.csdn.net/liyuanjinglyj/article/details/114374223
video = cv.VideoCapture("../SampleVideos/Unity2D.mp4")
print("Video Opened?", video.isOpened())

#2.获得视频属性
#  video.get(propId)
#  propId: 属性ID
#          cv.CAP_PROP_POS_MSEC - 视频文件的当前位置(ms)
#          cv.CAP_PROP_POS_FRAMES - 当前帧序号(从0开始)
#          cv.CAP_PROP_POS_AVI_RATIO - 视频文件相对位置(0表示开始,1表示结束)
#          cv.CAP_PROP_FRAME_WIDTH - 视频的帧宽度
#          cv.CAP_PROP_FRAME_HEIGHT - 视频的帧高度
#          cv.CAP_PROP_FPS - 帧率
#          cv.CAP_PROP_FOURCC - 视频编码的四字节编码
#          cv.CAP_PROP_FRAME_COUNT - 视频文件的帧的数量
#          cv.CAP_PROP_FORMAT - 对象的格式
#  参考资料:https://www.jianshu.com/p/676bef32e655
#           https://blog.csdn.net/qq_30622831/article/details/82082122
width = video.get(cv.CAP_PROP_FRAME_WIDTH)
height = video.get(cv.CAP_PROP_FRAME_HEIGHT)
fps = video.get(cv.CAP_PROP_FPS)
fourcc = int(video.get(cv.CAP_PROP_FOURCC))
totalFrames = video.get(cv.CAP_PROP_FRAME_COUNT)
print("Video Properties: resolution - (", width, height, ") FPS - "
      , fps, " FOURCC - "
      , chr(fourcc&0xFF), chr((fourcc>>8)&0xFF), chr((fourcc>>16)&0xFF),chr((fourcc>>24)&0xFF)
      , " Frame Count - ", totalFrames)

#3. 读取视频的一帧图像
#    ret,frame = video.read()
#    read()按帧读取视频,ret,frame是获cap.read()方法的两个返回值
#          其中ret读取帧是正确的话则返回True,如果文件读取到结尾,它的返回值就为False
frame_delay = int(1000 / fps)
while True:
    ret,frame = video.read()
    cv.imshow('Opencv Video Play', frame)
    key = cv.waitKey(frame_delay)
    if key == 27: #检测ESC键
        break
#4. 释放视频对象
video.release()
cv.destroyAllWindows()
相关推荐
wuyk5559 分钟前
107.FreeRTOS 链表深度解析:从原理到面试满分答案
c语言·开发语言·数据结构·stm32·单片机·链表·面试
geovindu10 分钟前
CSharp: Wordcloud
开发语言·后端·c#·.net·.netcore·词云
智购科技自动售卖机厂家18 分钟前
2026自动售货机库存热力图分析:从设备分布到补货优先级的数据可视化实践~YH
大数据·python·信息可视化
Java小白笔记26 分钟前
Java 实现 ZIP 压缩包生成方案
java·开发语言·网络·7-zip
Persistent的粽子!27 分钟前
C++:类与对象(一)
开发语言·c++·经验分享·笔记
鹿鹿学长44 分钟前
微软把语音转写打到 0.1 美元/小时:5 个月降价 72%,AI 音频进入地板价时代
python·自动化
weixin_440730501 小时前
使用pytest中方法控制执行步骤(test_begin.py、test_end.py,@pytest.mark.run(order=1))
开发语言·python·pytest
小柯南敲键盘1 小时前
跨境电商批量图片翻译与视频字幕翻译,就用跨马AI工具
大数据·人工智能·python·音视频
YOLO视觉与编程1 小时前
YOLO / Labelme目标分割数据集增强扩充软件v1.0.0适用于YOLO全版本
人工智能·深度学习·yolo·计算机视觉
geovindu1 小时前
CSharp: Command Pattern
开发语言·后端·c#·.net·.netcore·命令模式·行为模式