python-opencv使用摄像头

创建摄像头对象

使用opencv自带的VideoCapture()函数定义摄像头对象,其参数0表示第一个摄像头。

cap = cv2.VideoCapture(0)

这里可以设置视频播放的的大小,需要了解摄像头支持的视频大小。

cap.set(3, 960)
cap.set(4, 960)

当然也可以设置其他的参数(第一个参数就是图中的值),具体参考下图:

逐帧显示实现视频播放

在while循环中,利用摄像头对象的read()函数读取视频的某帧,并显示,然后等待1个单位时间,如果期间检测到了键盘输入q,则退出,即关闭窗口。

while(1):
    # get a frame
    ret, frame = cap.read()
    # show a frame
    cv2.imshow("capture", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

函数名:cap.read()

功 能:返回两个值先返回一个布尔值,如果视频读取正确,则为 True,如果错误,则为 False,也可用来判断是否到视频末尾 再返回一个值,为每一帧的图像,该值是一个三维矩阵。

通用接收方法为: ret,frame = cap.read(); 这样 ret 存储布尔值,frame 存储图像 若使用一个变量来接收两个值,如 frame = cap.read() 则 frame 为一个元组,原来使用 frame 处需更改为 frame[1]

返回值:R1:布尔值 R2:图像的三维矩阵

释放摄像头对象和窗口

调用release()释放摄像头,调用destroyAllWindows()关闭所有图像窗口。

cap.release()
cv2.destroyAllWindows() 

 代码

import cv2
import numpy as np

"""
函数名:cv2.VideoCapture()
功  能:通过摄像头捕获实时图像数据
返回值:有
参数一:摄像头代号,0为默认摄像头,笔记本内建摄像头一般为 0
       或者填写视频名称直接加载本地视频文件
"""
cap = cv2.VideoCapture(0)  # 创建一个 VideoCapture 对象

"""
函数名:cap.set( propId , value )
功  能:设置视频参数,设置视频的宽高值和摄像头有关使用笔记本内置摄像头时只能设置为 1280*720 以及 640*480,
       哪怕设置值不同时都会自动校正过来,并且仍然返回 True
返回值:布尔值
参数一:需要设置的视频参数
参数二:设置的参数值
"""
cap.set(3, 960)
cap.set(4, 960)

flag = 1  # 设置一个标志,用来输出视频信息
"""
函数名:cv2.isOpened()
功  能:返回一个布尔值( True / False ),检查是否初始化成功,成功返回 True
返回值:布尔值
"""
while(cap.isOpened()):  # 循环读取每一帧
    """
    函数名:cap.read()
    功  能:返回两个值
           先返回一个布尔值,如果视频读取正确,则为 True,如果错误,则为 False,也可用来判断是否到视频末尾
           再返回一个值,为每一帧的图像,该值是一个三维矩阵
           通用接收方法为:
           ret,frame = cap.read();
           这样 ret 存储布尔值,frame 存储图像
           若使用一个变量来接收两个值,如
           frame = cap.read()
           则 frame 为一个元组,原来使用 frame 处需更改为 frame[1]
    返回值:R1:布尔值
           R2:图像的三维矩阵
    """
    ret, frame = cap.read()
    # gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    # cv2.imshow("Gray", gray)

    cv2.imshow("Capture_Test", frame)  # 窗口显示,显示名为 Capture_Test

    k = cv2.waitKey(1) & 0xFF  # 每帧数据延时 1ms,延时不能为 0,否则读取的结果会是静态帧
    if k == ord('s'):  # 若检测到按键 ‘s’,打印字符串
        """
        函数名:cap.get( propId )
        功  能:查询视频的参数
        返回值:无
        参数一:查询的视频参数,其中部分值可以使用 cap.set() 进行修改
        """
        print(cap.get(3))
        print(cap.get(4))
        #保存一帧图片
        cv2.imwrite('1.jpg', frame)

    elif k == ord('q'):  # 若检测到按键 ‘q’,退出
        break

cap.release()  # 释放摄像头
cv2.destroyAllWindows()  # 删除建立的全部窗口

 

参考博客

https://www.cnblogs.com/li134655/p/8732390.html

https://blog.csdn.net/huanglu_thu13/article/details/52337013

 

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值