当前位置:首页 > 网络技术 > opencv读取视频文件(教你提取opencv视频地址)(opencv 读取视频)

opencv读取视频文件(教你提取opencv视频地址)(opencv 读取视频)

longge2022年03月24日 01:45:36网络技术17

1、从视频文件获取图像

使用cap = cv2.VideoCapture(‘文件名称’)构建视频文件的cap实例。cap.read()方法逐帧提取视频,每一帧为一幅图像,cap.read()方法返回的是一个二元组,下标0的元素值为True或False,如果为Flase表示读取文件完成。下标1的元素为图像对象,也是一个numpy数组类型的数据。cap.isOpened()用来检查cap实例是否已打开。cap.release()释放实例。下面这个例子中读取视频文件并显示,达到播放的效果,同时加入了waitKey()返回值的判断,输入按键’Q’或者’q’就可以退出循环。在这里waityKey()返回的数值和0xff相与后再和字符的ord()值比较,是为了规避某些系统中waitKey()返回的数值在高字节为非0值的情况。

import cv2

cap = cv2.VideoCapture('..\vtest.avi')

while cap.isOpened():
    ret, img = cap.read()
    if ret is not True:
        print("读取完成,退出")
        break      
    #处理img
    cv2.imshow('vedio', img)
    
    #检查按键
    key = cv2.waitKey(20) & 0xff
    if  key == ord('q') or key == ord('Q') :
        break
        
print('cap.isOpened():',cap.isOpened())
cap.release()
print('cap.isOpened():',cap.isOpened())

运行结果:

cap.isOpened(): True
cap.isOpened(): False

从运行结果看,cap.release()前cap.isOpened()的返回值一直为True。

2、从动态图片获取图像

使用VideoCapture(文件名)方法打开gif格式的图片,操作过程和上述普通的视频文件类似。

3、从相机获取图像

打开相机需要用相机的设备编号(数值型整数)作为入参传入VideoCapture(相机编号),比如cap = cv2.VideoCapture(0)构建编号为0的相机访问实例,第2台相机则传入1,以此类推,后续步骤的处理方法和读取视频文件一样。

import cv2

cap = cv2.VideoCapture(0)

while cap.isOpened():
    ret, img = cap.read()
    if ret is not True:
        print("读取失败,退出")
        break      
    #处理img
    cv2.imshow('vedio', img)
    
    #检查按键
    key = cv2.waitKey(20) & 0xff
    if  key == ord('q') or key == ord('Q') :
        break
        
print('cap.isOpened():',cap.isOpened())
cap.release()
print('cap.isOpened():',cap.isOpened())

4、写入视频文件

写视频文件需要创建VideoWriter对象,依次传入4个参数:

  • 第1个为文件名称;
  • 第2个为编码方式,其中编码方式和文件名称后缀有对应关系;
  • 第3个参数为每秒写入的帧数,参考数值为25,符合人眼习惯;
  • 第4个参数是图像大小,int类型;

常用的文件名称后缀和编码方式的对应关系有:

文件后缀 编码方式
avi XVID
avi MJPG
avi mp4v(小写)
mp4 mp4v(小写)

编码方式需要创建VideoWriter_fourcc对象,比如可以用下面的2种方式创建MJPG类型的编码:

fourcc=cv2.VideoWriter_fourcc('M','J','P','G')
fourcc=cv2.VideoWriter_fourcc(*'MJPG')

图像大小可以通过cat.get(propId)方法获取,但是该方法获取的是float类型,需要转换为int类型再传入VideoWriter。

cap = cv2.VideoCapture(0)
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) 
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
width = int(width)
height = int(height)

下面是一个创建XVID、MJPG、mp4v等3种编码方式视频文件的例子:

import cv2
 
#获取图像宽高
cap = cv2.VideoCapture(0)
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) 
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
width = int(width)
height = int(height)
print(width,height)
 
#创建VideoWriter对象
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 25.0, (width,  height))
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
out2 = cv2.VideoWriter('output2.avi', fourcc, 25.0, (width,  height))
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out3 = cv2.VideoWriter('output3.mp4', fourcc, 25.0, (width,  height))

while cap.isOpened():   
    ret, img = cap.read()
    print(img.shape)
    if ret is not True:
        print("读取失败,退出")
        break      
    #处理img
    cv2.imshow('vedio', img)
    out.write(img)
    out2.write(img)
    out3.write(img)

    #检查按键
    key = cv2.waitKey(1) & 0xff
    if  key == ord('q') or key == ord('Q') :
        break
 
cap.release()
out.release()
out2.release() 
out3.release()
免责声明
本站部分资源来源于互联网 如有侵权 请联系站长删除
龙哥网是优质的互联网科技创业资源_行业项目分享_网络知识引流变现方法的平台为广大网友提供学习互联网相关知识_内容变现的方法。#转载请注明出处!

“opencv读取视频文件(教你提取opencv视频地址)(opencv 读取视频)” 的相关文章

大神同款定格动画保姆级教学(大神同款定格动画保姆级教学 百度云)

大神同款定格动画保姆级教学(大神同款定格动画保姆级教学 百度云)

课程介绍这是一套为0基础,但热爱动画、想了解动画制作、想拍自己原创动画的同学量身打造的课程。无需美术基础和电脑软件,从基本的拍摄方法、通用的动画运动原理、动画表演,再到专业偶动画制作,循序渐进且全方位...

jquery+HTML5响应式导航菜单设计教程(jquery导航栏)

jquery+HTML5响应式导航菜单设计教程(jquery导航栏)

通过jquery+html5实现,当浏览器窗口缩小或者手机访问的时候,导航菜单变成按钮下拉式菜单。效果图: HTML代码: <nav id="nav-wrap">...

hits算法讲解与实战运用(搜索引擎的HITS算法原理讲解与SEO实战应用)

hits算法讲解与实战运用(搜索引擎的HITS算法原理讲解与SEO实战应用)

  一、HITS算法来源  1999年,Jon Kleinberg 提出了HITS算法。作为几乎是与PageRank同一时期被提出的算法,HITS同样以更精确的搜索为目的,并到今天仍然是一个优秀的算法...

响应式网页设计案例(响应式网页需要什么技术)(什么是响应式网页设计)

响应式网页设计案例(响应式网页需要什么技术)(什么是响应式网页设计)

  企业的响应式网站要如何设计?怎么才能让它更好的提高用户的体验度?响应式网站顾名思义就是根据不同的访问分辨率来调节自身的显示效果。它相比普通网站更加适合手机版面。毕竟手机端屏幕就那么大,用户更习惯网...

如何提升新消费品牌复购?借鉴互联网用户留存运营的5个方法(怎样才能吸引顾客复购)

如何提升新消费品牌复购?借鉴互联网用户留存运营的5个方法(怎样才能吸引顾客复购)

近几年,“新消费”是投资圈、电商圈的热词。光2021年上半年,新消费相关的投融资就有333起,融资总额超500亿(附录链接1)。但似乎从2021年下半年开始,“新消费”领域在资本圈有些遇冷:据蓝鲨消费...

利用Nginx伪静态自动匹配页面SEO优化

利用Nginx伪静态自动匹配页面SEO优化

      今天我们就利用Nginx伪静态来进行页面自动匹配,用来提交给百度收录,把我们的收录量干上去,有好多这样的网站了,也是通过页面自动匹配将收录...