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中的面向对象编程详解(下)
Apr 13 Python
python实现通过代理服务器访问远程url的方法
Apr 29 Python
python操作redis的方法
Jul 07 Python
基于python实现的抓取腾讯视频所有电影的爬虫
Apr 22 Python
微信跳一跳python自动代码解读1.0
Jan 12 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
May 24 Python
Flask实现跨域请求的处理方法
Sep 27 Python
新年福利来一波之Python轻松集齐五福(demo)
Jan 20 Python
在pytorch中动态调整优化器的学习率方式
Jun 24 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
Dec 31 Python
Python中Qslider控件实操详解
Feb 20 Python
python包的导入方式总结
Mar 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
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
不重新编译PHP为php增加openssl模块的方法
2011/06/14 PHP
PHP防CC攻击实现代码
2011/12/29 PHP
php实现把数组按指定的个数分隔
2014/02/17 PHP
PHP时间处理类操作示例
2018/09/05 PHP
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
Vue表单实例代码
2016/09/05 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
vue开发中遇到的问题总结
2020/04/07 Javascript
python实现ipsec开权限实例
2014/11/11 Python
详解Python并发编程之创建多线程的几种方法
2019/08/23 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
Python实现汇率转换操作
2020/05/03 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
单身旅行者的单身假期:Just You
2018/04/08 全球购物
商场活动策划方案
2014/01/24 职场文书
财务部总监岗位职责
2014/03/12 职场文书
医学生职业生涯规划书范文
2014/03/13 职场文书
签约仪式主持词
2014/03/19 职场文书
遵纪守法演讲稿
2014/05/23 职场文书
新颖的化妆品活动方案
2014/08/21 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
好好学习保证书
2015/02/26 职场文书
财务统计员岗位职责
2015/04/14 职场文书
公司员工奖惩制度
2015/08/04 职场文书
小学大队长竞选稿
2015/11/20 职场文书
导游词之桂林
2019/08/20 职场文书
go开发alertmanger实现钉钉报警
2021/07/16 Golang
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
详解MySQL的内连接和外连接
2023/05/08 MySQL