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正则匹配查询港澳通行证办理进度示例分享
Dec 27 Python
python实现排序算法
Feb 14 Python
Python数据结构之顺序表的实现代码示例
Nov 15 Python
python机器人行走步数问题的解决
Jan 29 Python
python爬虫_实现校园网自动重连脚本的教程
Apr 22 Python
Python标准库shutil用法实例详解
Aug 13 Python
django admin后管定制-显示字段的实例
Mar 11 Python
在Matplotlib图中插入LaTex公式实例
Apr 17 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
详解matplotlib绘图样式(style)初探
Feb 03 Python
Python爬虫之爬取某文库文档数据
Apr 21 Python
Python读取和写入Excel数据
Apr 20 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禁止页面缓存的代码
2011/10/23 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
PHP函数超时处理方法
2016/02/14 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
分享别人写的一个小型js框架
2007/08/13 Javascript
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
简单实例处理url特殊符号&处理(2种方法)
2013/04/02 Javascript
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
2013/12/29 Javascript
一个JavaScript去除字符串末尾的空白实例代码
2014/09/22 Javascript
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
javascript制作的cookie封装及使用指南
2015/01/02 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
原生JavaScript实现购物车
2021/01/10 Javascript
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
华为校园招聘上机笔试题 扑克牌大小(python)
2020/04/22 Python
python操作toml文件的示例代码
2020/11/27 Python
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
如何获得EntityManager
2014/02/09 面试题
日语专业毕业生求职信
2013/12/04 职场文书
新闻专业个人求职信
2013/12/19 职场文书
班主任工作年限证明
2014/01/12 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
《绝招》教学反思
2016/02/20 职场文书
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS
JavaScript圣杯布局与双飞翼布局实现案例详解
2022/08/05 Javascript