python 基于opencv操作摄像头
作者:我坚信阳光灿烂 发布时间:2023-03-06 08:02:31
标签:python,opencv,摄像头
要使用摄像头,需要使用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
摄像头捕捉到的图像:
获取并修改摄像头的属性值
通过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倍分辨率于原先的图像:
播放本地视频
跟打开摄像头一样,如果把摄像头的编号换成视频的路径就可以播放本地视频了。回想一下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 :
录制视频并保存
之前我们保存图片用的是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 :
来源:https://www.cnblogs.com/wojianxin/p/12585417.html
0
投稿
猜你喜欢
- 方法一一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大1、设置数
- map()函数可以对一个数据进行同等迭代操作。例如:def f(x): return x * xr = map(f, [1,
- 析构函数:当某个对象成为垃圾或者当对象被显式销毁时执行。GC(Garbage Collector) 在PHP中,没有任何变量指向这个对象时,
- python实现的五子棋,能够自动判断输赢,没有是实现电脑对战功能源码下载:pygame五子棋# 1、引入pygame 和 pygame.l
- 1、存储过程基本语法: create procedure sp_name() begin ...... end; 2、如何调用: call
- 感谢AKA及作者。Perl 中的正则表达式正则表达式的三种形式正则表达式中的常用模式正则表达式的 8 大原则 &nbs
- 用python进行线性回归分析非常方便,有现成的库可以使用比如:numpy.linalog.lstsq例子、scipy.stat
- 很多时候,希望能够在 HTML 中使用空格排版。但浏览器在解析 HTML 时,会把连续的空格解析成一个,所以我们会使用
- python运行或调用另一个py文件或参数1. 运行另一个py文件(1)在file_A.py中运行file_B.py文件import oso
- 本文实例为大家分享了bootstrapTable+ajax加载数据,和refresh更新数据两部分,供大家参考,具体内容如下1.html&l
- 天气查询python小程序第0步:导入工具库第一步:生成查询天气的url链接第二步:访问url链接,解析服务器返回的json数据,变成pyt
- 我们经常使用动态创建 JavaScript 的方式来实现 JavaScript 文件的无阻塞(Non-blocking)、并行下载(Para
- 在昨天的文章,《 block 和 inline 的区别是?》里,我给大家留了个问题——LI 元素到底是block level 的,还是 in
- 在使用django-rest-framework开发项目的时候我们总是避免不了跨域的问题,因为现在大多数的项目都是前后端分离,前后端项目部署
- tensorflow2.0实现cnn图像识别import tensorflow as tffrom t
- 应用正则表达式的全局匹配,可以匹配出字符出现的次数,比较这些次数,将最大的保存并返回。代码如下: var countMost = funct
- 这次主要是爬了京东上一双鞋的相关评论:将数据保存到excel中并可视化展示相应的信息主要的python代码如下:文件1#将excel中的数据
- 本文实例讲述了python在控制台输出进度条的方法。分享给大家供大家参考。具体实现方法如下:进度条效果如下所示:|#############
- 如下所示:def test1(): import os return1=os.system('ping 8.8.8.8')
- 1.Django框架Django是一个开放源代码的Web应用框架,由Python写成。它采用 了MVC的框架模式,即模型(M)、视图(V)和