VideoCapture() 虚拟采集器,一般设备号从0开始

cap.read() 读取视频帧

返回值有两个,第一个为状态值,读到帧为true

第二个值为视频帧

cap.release() 释放资源

示例程序:

import cv2  #引入CV库
#创建窗口
cv2.namedWindow('video',cv2.WINDOW_NORMAL)
cv2.resizeWindow('video',300,300)  #设置窗口大小#获取视频设备
cap = cv2.VideoCapture(0)
while True:#从摄像头读视频帧ret,frame = cap.read()#将视频帧在窗口中显示cv2.imshow('video',frame)key = cv2.waitKey(1)  #不能为0,0为等待中断,只能读取到一帧的数据if(key & 0xFF == ord('q')):break#释放资源
cap.release() #释放视频资源
cv2.destroyAllWindows()  #释放窗口资源

运行结果:

读取视频文件

从视频文件中读取视频帧

cap = cv2.VideoCapture("文件地址")   #从文件获取视频

只处理视频,不处理音频,所以读取到的视频没有声音

播放速度设置

key = cv2.waitKey(40) 

将视频数据录制成多媒体文件

VideoWriter()

write()

1秒多少帧,视频的像素(宽和高)

release()   释放资源,将磁盘中的数据输出

VideoWriter()  参数

参数1:为输出文件位置

参数2:多媒体文件格式(VideoWriter_fourcc),fourcc所用编码器,Windows系统采用DIVX编码器

 参数3:帧率

参数4:分辨率大小,应为摄像头实际分辨率

示例程序:

import cv2#创建VideoWriter为写多媒体文件
fourcc = cv2.VideoWriter_fourcc(*'DIVX')
vw = cv2.VideoWriter("C:\\Users\\Mengyang\\Desktop\\out.mp4",fourcc,25,(640,480))
##创建窗口
cv2.namedWindow('video',cv2.WINDOW_NORMAL)
cv2.resizeWindow('video',300,300)  #设置窗口大小#获取视频设备
cap = cv2.VideoCapture(0)
#cap = cv2.VideoCapture("文件地址")   从文件获取视频while True:#从摄像头读视频帧ret,frame = cap.read()#将视频帧在窗口中显示cv2.imshow('video',frame)#写数据到多媒体文件vw.write(frame)key = cv2.waitKey(1)  #不能为0,0为等待中断,只能读取到一帧的数据if(key & 0xFF == ord('q')):break#释放资源
cap.release() #释放VideoCapture
vw.release() #释放VideoWrite
cv2.destroyAllWindows()  #释放窗口资源

代码优化

问题1:显示窗口为什么变大了?

在视频帧在窗口显示时重新设置一下窗口大小。

问题2:使用isOpened()判断摄像头是否已打开

问题3:采集数据时要判断数据是否获取到了

优化过的程序:

import cv2#创建VideoWriter为写多媒体文件
fourcc = cv2.VideoWriter_fourcc(*'DIVX')
vw = cv2.VideoWriter("C:\\Users\\Mengyang\\Desktop\\out.mp4",fourcc,25,(640,480))#创建窗口
cv2.namedWindow('video',cv2.WINDOW_NORMAL)
cv2.resizeWindow('video',300,300)  #设置窗口大小#获取视频设备
cap = cv2.VideoCapture(0)
#cap = cv2.VideoCapture("文件地址")   从文件获取视频while cap.isOpened():    #判断摄像头是否已打开,若打开返回值则为True#从摄像头读视频帧ret,frame = cap.read()if ret ==True : #判断是否读取到数据#将视频帧在窗口中显示cv2.imshow('video',frame)cv2.resizeWindow('video',300,300)  #重新设置窗口大小#写数据到多媒体文件vw.write(frame)key = cv2.waitKey(1)  #不能为0,0为等待中断,只能读取到一帧的数据if(key & 0xFF == ord('q')):breakelse:break
#释放资源
cap.release() #释放VideoCapture
vw.release() #释放VideoWrite
cv2.destroyAllWindows()  #释放窗口资源

4.通过Opencv采集摄像头视频数据相关推荐

  1. Android 手机采集摄像头视频 socket 视频传输实时传播

    这里搜集了两种实现Android 手机采集摄像头视频 socket 视频传输实时传播的方法,两种都可以使用. 第一种如下: 1.通过客户端socket请求,服务端接受到请求后,获取socket的输出流 ...

  2. android 手机采集摄像头视频 socket 视频传输 实时传播

    一.具体流程: 1.通过客户端socket请求,服务端接受到请求后,获取socket的输出流对象outs. 2.服务端通过Camera的setPreviewCallback方法回调采集摄像头视频数据, ...

  3. pyqt5 pyqt5+opencv 实现读取视频数据

    pyqt5 pyqt5+opencv 实现读取视频数据 1.openCV读取视频数据 2.openCV集成pyqt5读取视频数据 界面美化版: 1.openCV读取视频数据 import cv2if ...

  4. ffmpeg 采集摄像头yuv数据

    本文讲述在linux下,如何使用ffmpeg采集摄像头yuv数据,并保存为文件. 分为4个部分进行讲解 需要的软硬件环境 使用ffmpeg命令采集yuv数据. 使用ffmpeg代码采集yuv数据. 查 ...

  5. Qt+OpenCV读取摄像头视频、本地视频、网络视频流Demo

    Qt+OpenCV读取摄像头视频.本地视频.网络视频流Demo

  6. 使用OpenCV采集摄像头的视频并保存为文件

    OpenCV的VideoCapture功能强大,它封装了各种不同的API,见videoio.hpp enum VideoCaptureAPIs {        CAP_ANY          = ...

  7. c语言编程获取摄像头图像,OpenCV 获取摄像头图像数据并显示

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. 用摄像头来获取数据的应用其实并不算太多,最近刚刚好用到,查了下用OpenCV来实现非常方便 ...

  8. python+opencv调用摄像头视频图像处理

    在做深度学习的时候,难免会用到摄像头采集图像.在这个就会用到python调用摄像头+opencv图像处理.视频图像的处理和单幅图片处理是一样的,视频就是很多单幅图像连续播放.每秒播放(采集)的图片数量 ...

  9. 【2012年终总结】之一 opencv + ds采集摄像头视频 MFC点点滴滴

    1.MFC单文档多文档程序 不让MFC来更新菜单 1 在CMainFrame::CMainFrame中添加 2 3 m_bAutoMenuEnable = FALSE; 标题栏图标的更改 1 //cu ...

最新文章

  1. Paddle Lite端侧部署
  2. 谷歌上线AI新玩法:随手乱涂鸦,一键变怪兽
  3. linux 下ab压力测试
  4. Java中使用Jedis连接Redis数据库流程
  5. struts2配置文件(简单)
  6. jsp mysql登录 demo_java jsp+servlet+mysql实现登录网页设计
  7. Python 刷题常用语法与数据结构汇总-2022.01.30
  8. Qt工作笔记-QListWidget鼠标拖动,一个到另一个,并遍历
  9. POJ 2185 Milking Grid (KMP,GCD)
  10. 机器学习笔记——支持向量机
  11. 2021年Tiktok用户增长和使用模式?
  12. C#实现IDispose接口
  13. python 写文件 换行_python中写入txt文件需要换行,以及\r 和\n
  14. swift 高级进阶1:类与结构体(上)
  15. eclipse搭建springmvc
  16. matlab混合copula,​MATLAB实战—最优Copula函数的选择
  17. 华为的哪个字体像苹果的_华为手机手写怎么变字体 苹果手写字体怎么变粗
  18. 网络流量分析系统的价值
  19. 数学|如何求解线性方程系数?
  20. Jetson Orin 平台MAX9296+森云SG5-IMX490C-GMSL2 RGGB(无ISP)驱动调试

热门文章

  1. 查询主机名对应的IP地址-C语言
  2. 论文阅读Measuring Regularity of Individual Travel Patterns
  3. 尚硅谷es6新特性笔记
  4. 【算力网络】算力网络的技术创新——绿色与安全关键技术
  5. python交通调查数据处理_GitHub - unlimitbladeworks/traffic-monitor: 基于高德地图的交通数据分析...
  6. 【算法与数据结构】——乘法逆元
  7. 【PMAC学习笔记——第0篇】初识PMAC运动控制卡以及 Microsoft Visual C++ 2019,PeWin32 PRO2环境搭建
  8. java与模式--里氏代换原则,依赖倒置原则
  9. SPI总线通信——基于STM32MP157A
  10. 友价商城源码插件-百度链接主动提交