python 基于opencv操作摄像头


Posted in Python onDecember 24, 2020

要使用摄像头,需要使用cv2.VideoCapture(0)创建VideoCapture对象,参数0指的是摄像头的编号,如果你电脑上有两个摄像头的话,访问第2个摄像头就可以传入1,依此类推。

# 打开摄像头并灰度化显示
import cv2 as cv 
# 0表示摄像头的编号
capture = cv.VideoCapture(0)

while(True):
  # 获取一帧
  # 第1个参数ret(return value缩写)是一个布尔值,表示当前这一帧是否获取正确
  ret, frame = capture.read()
  # 将这帧转换为灰度图
  gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)

  cv.imshow('frame', gray)
  if cv.waitKey(1) == ord('q'):
    break

摄像头捕捉到的图像:

python 基于opencv操作摄像头

获取并修改摄像头的属性值

通过capture.get(propId)可以获取摄像头的一些属性,比如捕获的分辨率,亮度和对比度等。propId是从0~18的数字,代表不同的属性。要修改摄像头的属性值,可以使用capture.set(propId,value)。比如说,我们在while之前添加下面的代码,可以捕获相对于上面2倍分辨率的视频。

# 获取捕获的分辨率
# propId可以直接写数字,也可以用OpenCV的符号表示
width, height = capture.get(3), capture.get(4)
print(width, height)

# 以原分辨率的一倍来捕获
capture.set(cv.CAP_PROP_FRAME_WIDTH, width * 2)
capture.set(cv.CAP_PROP_FRAME_HEIGHT, height * 2)

捕获的2倍分辨率于原先的图像:

python 基于opencv操作摄像头

播放本地视频

跟打开摄像头一样,如果把摄像头的编号换成视频的路径就可以播放本地视频了。回想一下cv.waitKey(),它的参数表示暂停时间,所以这个值越大,视频播放速度越慢,反之,播放速度越快,通常设置为25或30。

# opencv播放本地视频
import cv2 as cv

capture = cv.VideoCapture('E:/1.mp4')

while(capture.isOpened()):
  ret, frame = capture.read()
  gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)

  cv.imshow('frame', gray)
  if cv.waitKey(30) == ord('q'):
    break

播放中的 E:/1.mp4 :

python 基于opencv操作摄像头

录制视频并保存

之前我们保存图片用的是cv.imwrite(),要保存视频,我们需要创建一个VideoWriter的对象,需要给它传入四个参数:
1.输出的文件名,如'output.avi'
2.编码方式FourCC码
3.帧率FPS
4.要保存的分辨率大小
FourCC是用来指定视频编码方式的四字节码。如MJPG编码可以这样写: cv.VideoWriter_fourcc(*'MJPG')或cv.VideoWriter_fourcc('M','J','P','G')

import cv2 as cv

capture = cv.VideoCapture(0)

# 定义编码方式并创建VideoWriter对象
fourcc = cv.VideoWriter_fourcc(*'MJPG')
outfile = cv.VideoWriter('output.avi', fourcc, 25., (640, 480))

while(capture.isOpened()):
  ret, frame = capture.read()

  if ret:
    outfile.write(frame) # 写入文件
    cv.imshow('frame', frame)
    if cv.waitKey(1) == ord('q'):
      break
  else:
    break

如愿以偿在当前路径下生成了output.avi :

python 基于opencv操作摄像头

以上就是python 基于opencv操作摄像头的详细内容,更多关于python opencv操作摄像头的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
python基础之入门必看操作
Jul 26 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
Jan 04 Python
python 日志增量抓取实现方法
Apr 28 Python
详解python中init方法和随机数方法
Mar 13 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 Python
微信公众号token验证失败解决方案
Jul 22 Python
基于python框架Scrapy爬取自己的博客内容过程详解
Aug 05 Python
python爬虫之爬取百度音乐的实现方法
Aug 24 Python
Python常用库大全及简要说明
Jan 17 Python
Python错误的处理方法
Jun 23 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 Python
python 基于selenium实现鼠标拖拽功能
Dec 24 #Python
python实现简单猜单词游戏
Dec 24 #Python
Python 虚拟环境工作原理解析
Dec 24 #Python
python基于openpyxl生成excel文件
Dec 23 #Python
Python+unittest+requests+excel实现接口自动化测试框架
Dec 23 #Python
用python计算文件的MD5值
Dec 23 #Python
python中lower函数实现方法及用法讲解
Dec 23 #Python
You might like
用PHP调用数据库的存贮过程!
2006/10/09 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
模仿JQuery sortable效果 代码有错但值得看看
2009/11/05 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
AngularJS控制器详解及示例代码
2016/08/16 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
VUE : vue-cli中去掉路由中的井号#操作
2020/09/04 Javascript
[00:57]林俊杰助阵DOTA2亚洲邀请赛
2015/01/28 DOTA
Python continue语句用法实例
2014/03/11 Python
Python实现Linux下守护进程的编写方法
2014/08/22 Python
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
python 网络编程详解及简单实例
2017/04/25 Python
Python入门_学会创建并调用函数的方法
2017/05/16 Python
python http基本验证方法
2018/12/26 Python
Python 使用多属性来进行排序
2019/09/01 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
pytorch查看通道数 维数 尺寸大小方式
2020/05/26 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
信息专业学生学习的自我评价
2014/02/17 职场文书
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
分公司负责人任命书
2014/06/04 职场文书
环卫工作汇报材料
2014/10/28 职场文书
2014年变电站工作总结
2014/12/19 职场文书
教师考核表个人总结
2015/02/12 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL