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的Django框架中的模版相关知识
Jul 15 Python
python处理Excel xlrd的简单使用
Sep 12 Python
python使用标准库根据进程名如何获取进程的pid详解
Oct 31 Python
python实现员工管理系统
Jan 11 Python
理论讲解python多进程并发编程
Feb 09 Python
Pycharm 操作Django Model的简单运用方法
May 23 Python
使用python进行文本预处理和提取特征的实例
Jun 05 Python
Python异常处理知识点总结
Feb 18 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
Sep 05 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
Jan 20 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
Jun 29 Python
python manim实现排序算法动画示例
Aug 14 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 setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
thinkphp数据查询和遍历数组实例
2014/11/28 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
js+数组实现网页上显示时间/星期几的实用方法
2013/01/18 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
JavaScript判断对象是否为数组
2015/12/22 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
vue中render函数的使用详解
2018/10/12 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
Python 序列化 pickle/cPickle模块使用介绍
2014/11/30 Python
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
2019/12/04 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
酒店仓管员岗位职责
2014/04/28 职场文书
读书月活动方案
2014/05/22 职场文书
售后前台接待岗位职责
2015/04/03 职场文书
培训通知书模板
2015/04/17 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
学校节水倡议书
2015/04/29 职场文书
保险公司2016开门红口号集锦
2015/12/24 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL