zoukankan      html  css  js  c++  java
  • 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,'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('视频文件打开失败')

  • 相关阅读:
    接口的基本语法
    包和访问权限(三)
    包和访问权限(二)
    包和访问权限(一)
    为什么用抽象类
    html5,单击显示详细信息
    html5,格式的验证
    html5,加密元素
    html5,新增的元素,fieldset legend
    html5,进度条
  • 原文地址:https://www.cnblogs.com/liming19680104/p/12307654.html
Copyright © 2011-2022 走看看