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使用内存zipfile对象在内存中打包文件示例
Apr 30 Python
Python中的random()方法的使用介绍
May 15 Python
Python验证码识别的方法
Jul 10 Python
Python实现简单拆分PDF文件的方法
Jul 30 Python
浅谈python 读excel数值为浮点型的问题
Dec 25 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
Jun 12 Python
Python中判断子串存在的性能比较及分析总结
Jun 23 Python
python绘图模块matplotlib示例详解
Jul 26 Python
python爬虫增加访问量的方法
Aug 22 Python
python turtle工具绘制四叶草的实例分享
Feb 14 Python
使用python创建Excel工作簿及工作表过程图解
May 27 Python
Python使用pycharm导入pymysql教程
Sep 16 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
德生PL330的评价与改造
2021/03/02 无线电
PHP魔术引号所带来的安全问题分析
2014/07/15 PHP
再谈PHP中单双引号的区别详解
2016/06/12 PHP
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
js创建数组的简单方法
2016/07/27 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
AngularJS实现页面定时刷新
2017/03/14 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
Python标准模块--ContextManager上下文管理器的具体用法
2017/11/27 Python
python3 cvs将数据读取为字典的方法
2018/12/22 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
Skyscanner台湾:全球知名的旅行比价引擎
2018/07/01 全球购物
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
产品售后服务承诺书
2014/05/21 职场文书
机械工程师岗位职责
2014/06/16 职场文书
文明单位创建材料
2014/12/24 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书
天鹅湖观后感
2015/06/09 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书
SqlServer数据库远程连接案例教程
2021/07/15 SQL Server
Django中celery的使用项目实例
2022/07/07 Python