zoukankan      html  css  js  c++  java
  • 利用opencv实现视频捕捉功能

     1 import cv2 as cv
     2 import numpy as np
     3 
     4 
     5 def video_demo():
     6     capture = cv.VideoCapture(0)   #打开摄像头,参数0代表设备ID(设备表示号),也就是电脑自带的摄像头,人如果要设置成其他摄像头,可以更改这个参数
     7     while(True):
     8         ret,frame = capture.read()  #读取摄像头,它能返回两个参数,第一个参数是bool 型的ret,其值为True或者False,代表有没有读到图片;第二个参数frame,表示读取当前一帧的图片
     9         frame = cv.flip(frame,1)     #翻转   等于0:上下颠倒     大于0:水平颠倒  小于0:180旋转
    10         cv.imshow("video",frame)
    11         c = cv.waitKey(10)
    12         if c == 27:   
    break # 这里代码的意思是按下esc键就会把这个捕捉到的视频图片关闭掉 或者也可以按下q 键来关闭视频图片,但是代码是这样写
    cv.waitKey(10) & 0xff == ord('q')
    15 video_demo()
    16 cv.waitKey(0)
    17 18 cv.destroyWindows()

        注意:上面那个捕捉到摄像头的视频,点击窗口关闭是关闭不了的,而且当你修改图片翻转方式的时候,你再执行代码的话会有代码报错,因为他是一个死循环,所以你必须按照上面说的那样,才能实现视频翻转调节功能,这里一定要注意,一开始,自己以为写的代码有bug,后来注意到了这里,不是代码的原因,这里涉及到个人隐私问题,就不拿视频照片举列子了,按照我上面说了,操作就完全没问题,哈哈哈。

           接下来操作一个读取视频文件:

            

     1 import cv2 as cv
     2 
     3 def capture_video():
     4     capture = cv.VideoCapture('D:/tt.avi')   #这里面的参数是视频资源路径
     5     while True:
     6         ret ,frame=capture.read()
     7         if not ret:
     8             break
     9         cv.imshow('video',frame)
    10         c = cv.waitKey(50)
    11         if c == 27 :
    12             break
    13 t1=cv.getTickCount()
    14 
    15 capture_video()
    16 
    17 t2=cv.getTickCount()
    18 
    19 print('the time is : %s ms'%((t2-t1)/cv.getTickFrequency()*1000))
    20 
    21 cv.waitKey(-1)
    22 cv.destoryAllWindows()

          通过上面操作就可以实现读取视频文件了,但是有一个缺点,就是读取的视频文件播放没有声音,目前还不知道怎样加载出声音来,hh 。

      

  • 相关阅读:
    vue学习之vuex的入门
    Vue的入门之安装
    JS之作用域链
    map去重value值
    增量部署和全量部署
    js跳转页面的方法
    Quartz定时任务时间设置
    @RequestParam和@PathVariable用法小结
    nginx负载均衡的5种策略(转载)
    使用Joda-Time优雅的处理日期时间
  • 原文地址:https://www.cnblogs.com/1121518wo/p/10803579.html
Copyright © 2011-2022 走看看