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中input和raw_input的一点区别
Oct 21 Python
Python使用minidom读写xml的方法
Jun 03 Python
Python判断字符串与大小写转换
Jun 08 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
Jun 23 Python
pandas获取groupby分组里最大值所在的行方法
Apr 20 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
Python 调用 zabbix api的方法示例
Jan 06 Python
使用Fabric自动化部署Django项目的实现
Sep 27 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
Feb 10 Python
Python通过4种方式实现进程数据通信
Mar 12 Python
深入浅析Python代码规范性检测
Jul 31 Python
python 如何对logging日志封装
Dec 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
深入HTTP响应状态码速查表的详解
2013/06/07 PHP
基于PHP中的常用函数回顾
2013/07/11 PHP
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
简单的php购物车代码
2020/06/05 PHP
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
2018/03/06 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
JavaScript命名空间模式实例详解
2019/06/20 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
Python threading多线程编程实例
2014/09/18 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
浅谈python 中的 type(), dtype(), astype()的区别
2020/04/09 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
工艺工程师工作职责
2013/11/23 职场文书
2014学年自我鉴定
2014/02/23 职场文书
如何写自我鉴定
2014/03/19 职场文书
教师中国梦演讲稿
2014/04/23 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
goland 设置project gopath的操作
2021/05/06 Golang