zoukankan      html  css  js  c++  java
  • openCV(三)——视频

    1、用摄像头捕获视频:openCV为摄像头提供了简单的接口,可以捕获一段视屏,并将其转换成灰度视屏显示出来,
    创建一个VideoCapture对象,用于获取视频,其参数可以是设备的索引号或者一个视频文件,
    设备索引号就是指定要使用的摄像头,一般笔记本默认内置摄像头,参数0.可以通过设成1或其他选择别的摄像头。
    之后可以一帧一帧捕获视频,最后不要忘了停止捕获视屏
    # 有时cap可能不能成功的而初始化摄像头设备,可以使用cap.isOpened()来检查是否成功初始化,返回True则没问题。否则使用函数cap.open()
    # 可以使用函数cap.get(prpId)来获取视频的一些参数信息,这里propId可以是0-18之间的任何整数,每一个数代表视频的一个属性,其中一些值可以使用cap.get(propId,value)来修改,
    # value是你想要设置成的新值。eg:cap.set(3)、cap.get(4)默认是640*480; 但使用 ret=cap.set(3,320)和ret=cap.get(4,240)将宽高改为320*240
     1 import numpy as np
     2 import cv2
     3 #camera_number=0
     4 # cv2.CAP_DSHOW是作为一部分传递的标志,可以传递很多标志,这个特定于微软,是个附加值,若要打开摄像机2,可以执行cv2.CAP_DSHOW+1
     5 #cap=cv2.VideoCapture(0)
     6 # 使用上述的句子,报错[ WARN:0] global C:projectsopencv-pythonopencvmodulesvideoiosrccap_msmf.cpp (674) SourceReaderCB::~SourceReaderCB terminating async callback
     7 # 修改为下述句子
     8 cap=cv2.VideoCapture(0,cv2.CAP_DSHOW)
     9 
    10 while(True):
    11     # 逐帧捕获视频,返回一个布尔值,帧读取正确为true,通过检查他的返回值来查看视频文件是否已经到达了结尾
    12     # 有时cap可能不能成功的而初始化摄像头设备,可以使用cap.isOpened()来检查是否成功初始化,返回True则没问题。否则使用函数cap.open()
    13     # 可以使用函数cap.get(prpId)来获取视频的一些参数信息,这里propId可以是0-18之间的任何整数,每一个数代表视频的一个属性,其中一些值可以使用cap.get(propId,value)来修改,
    14     # value是你想要设置成的新值。eg:cap.set(3)、cap.get(4)默认是640*480; 但使用 ret=cap.set(3,320)和ret=cap.get(4,240)将宽高改为320*240
    15     ret,frame=cap.read()
    16     # 对框架进行操作,转化为灰度视屏
    17     gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    18     # 显示结果框架
    19     cv2.imshow('frame',gray)
    20     if cv2.waitKey(1)&0xFF==ord('q'):
    21         break
    22 # 完成所有操作后释放捕获
    23 cap.release()
    24 cv2.destroyAllWindows()

    2、从文件中播放视频
    和摄像头捕获一样,只需要把设备索引号该城视频文件的名字,在播放每一帧时,使用cv2.waiKey()设置适当的持续时间
    设置太低播放快,设置高则播放慢,一般25毫秒即可
     1 import numpy as np
     2 import cv2
     3 cap=cv2.VideoCapture(0,cv2.CAP_DSHOW)
     4 fourcc=cv2.VideoWriter_fourcc(*'XVID')
     5 out=cv2.VideoWriter('output.avi',fourcc,20.0,(640,480))
     6 while(cap.isOpened()):
     7     ret,frame=cap.read()
     8     if ret==True:
     9         frame=cv2.flip(frame,0)
    10         out.write('frame',frame)
    11         if cv2.waitKey(1)&0xFF==ord('q'):
    12             break
    13     else:
    14         break
    15 cap.release()
    16 out.release()
    17 cv2.destroyAllWindows()
  • 相关阅读:
    @jackychua博客
    c#类与对象
    SQL SERVER 触发器
    .NET平台及C#面向对象编程
    数据库设计指南【转】
    HTTP 协议是一种请求/响应型的协议
    各种字符编码方式详解及由来(ANSI,GB2312,GBK,Big5,UNICODE,UTF8,UTF16)
    常用协议端口 POP3,IMAP,SMTP,Telnet,HTTP,HTTPS
    asp.net Request.Form Request.para Request.Querystring 区别
    Gzipstream 解压问题
  • 原文地址:https://www.cnblogs.com/Free-Ink/p/12904212.html
Copyright © 2011-2022 走看看