python-opencv-视频的读取与分解

OpenCV中提供了一个基本的视频操作类VideoCaputre,它是OpenCV用来通过摄像头、视频文件或图像序列来获取及操作视频的类。VideoCaputre有两种读取视频的方法,分别是通过摄像头读取与通过视频文件读取。 

通过打开摄像头捕捉视频 :

import cv2
#获取一个视频并打开
cap=cv2.VideoCapture(0)  #打开摄像头并创建摄像头对象
#其中0表示打开内置摄像头,1表示打开外接摄像头
if cap.isOpened():  #VideoCaputre对象是否成功打开
    print('已经打开了摄像头捕捉视频')
else:
    print('打开摄像头失败')

 

通过打开视频文件读取视频: 

import cv2
#获取一个视频并打开
cap=cv2.VideoCapture('1.mp4')

if cap.isOpened():  #VideoCaputre对象是否成功打开
    print('已经打开了视频文件')
else:
    print('视频文件打开失败')

 

视频的分解:

视频其实就是由连续的图像画面组成的。当连续的图像变化每秒超过24帧画面以上时,根据视觉暂留原理,人眼就无法识别是否是静态画面了,这样平滑连续的视觉效果看起来就像是视频了。

帧率是以帧称为单位的位图图像连续出现在显示器上的频率,通俗来讲,就是1秒钟的帧(fps),也就是1秒钟展示的图片数量。

复制代码
import cv2
#获取一个视频并打开
cap=cv2.VideoCapture('1.mp4')

if cap.isOpened():  #VideoCaputre对象是否成功打开
    print('已经打开了视频文件')
    fps = cap.get(cv2.CAP_PROP_FPS)  # 返回视频的fps--帧率
    width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)  # 返回视频的宽
    height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)  # 返回视频的高
    print('fps:', fps,'width:',width,'height:',height)
    i=0
    while 1:
        if i==15:
            print('保存了视频的前15帧图像,保存结束')
            break
        else:
            i=i+1
            ret, frame = cap.read()  # 读取一帧视频
            # ret 读取了数据就返回True,没有读取数据(已到尾部)就返回False
            # frame 返回读取的视频数据--一帧数据
            file_name='.\\aa\\img'+str(i)+'.jpg'
            cv2.imwrite(file_name, frame)


else:
    print('视频文件打开失败')
复制代码

 

 

 

 

posted @   天子骄龙  阅读(6862)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2019-02-14 表格控件QTableWidget
2019-02-14 pyqt5--列表控件QListWidget
2019-02-14 python---剪贴板
点击右上角即可分享
微信分享提示

目录导航