• python_Opencv_读取视频


    目标
      • 学会读取视频文件,显示视频,保存视频文件
      • 学会从摄像头获取并显示视频
      • 你将会学习到这些函数:cv2.VideoCapture(),cv2.VideoWrite()
    用摄像头捕获视频

    • 使用摄像头来捕获一段视频,并把它转换成灰度视频显示出来。
    • 首先应该创建一个VideoCapture 对象,参数可以是设备的索引号,或者是一个视频文件。
    • 设备索引号就是在指定要使用的摄像头。一般的笔记本电脑都有内置摄像头。所以参数就是0。你可以通过设置成1或者其他的来选择别的摄像头。
    • 之后,你就可以一帧一帧的捕获视频了。但是最后,别忘了停止捕获视频。

    上代码:

     1 # -*- coding: utf-8 -*-
     2 
     3 import numpy as np
     4 import cv2
     5 
     6 cap = cv2.VideoCapture(0)                         # 创建一个VideoCapture对象
     7 while(True):
     8    
     9     ret, frame = cap.read()                       # 一帧一帧读取视频
    10     gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 对每一帧做处理,设置为灰度图
    11     cv2.imshow('frame',gray)                      # 显示结果
    12     if cv2.waitKey(1) & 0xFF == ord('q'):         # 按q停止
    13         break
    14     
    15 cap.release()                                     # 释放cap,销毁窗口
    16 cv2.destroyAllWindows()
    View Code
    • 运行一下可以看到摄像头打开,并且显示了灰度图,按q退出

    读取视频文件:

     1 # -*- coding: utf-8 -*-
     2 
     3 import numpy as np
     4 import cv2
     5 
     6 cap = cv2.VideoCapture(0)
     7 
     8 # Define the codec and create VideoWriter object
     9 fourcc = cv2.VideoWriter_fourcc(*'XVID')
    10 out = cv2.VideoWriter('test.avi',fourcc, 20.0, (640,480))
    11 
    12 while(cap.isOpened()):
    13     ret, frame = cap.read()
    14     if ret==True:
    15         frame = cv2.flip(frame,0)
    16 
    17 # write the flipped frame
    18     out.write(frame)
    19 
    20     cv2.imshow('frame',frame)
    21     if cv2.waitKey(1) & 0xFF == ord('q'):
    22         break
    23     else:
    24         break
    25 # Release everything if job is finished
    26 cap.release()
    27 out.release()
    28 cv2.destroyAllWindows()
    View Code
    • 本例子中的演示会比较麻烦。需要安装合适版本的ffmpeg 或者gstreamer,才能正确运行改程序
  • 相关阅读:
    MySQL数据库导入方法(最佳方案--cmd命令行方式导入,不会导致数据结构或表丢失)
    MySQL:互联网公司常用分库分表方案汇总!
    主流的消息中间件有哪些?
    Java实现进制之间转换的工具类
    python查找文件夹下所有指定后缀名的文件
    Visual Studio检查内存泄露方法
    Linux重要文件被删恢复问题
    docker 安装与相关操作
    C++ 替换路径中斜杠 并获取完整路径的文件名
    catch2:一个好用的C++单元测试框架
  • 原文地址:https://www.cnblogs.com/jerrybaby/p/5843785.html
Copyright © 2020-2023  润新知