ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python+opencv调用摄像头

2021-07-20 10:03:20  阅读:205  来源: 互联网

标签:视频 get python frame cap cv2 opencv 摄像头


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.get(propId)
3 视频宽
4 视频高
5 帧率
10-15 图像亮度 对比度 饱和度 色调 增益 曝光
"""

# 定义编码器并创建 VideoWriter 对象
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, cap.get(5), (int(cap.get(3)),int(cap.get(4))))

 
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)

    frame = cv2.flip(frame, 1) # 写入翻转的帧 1左右翻转0上下翻转      
    out.write(frame)
 
    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()  # 释放摄像头
out.release()
cv2.destroyAllWindows()  # 删除建立的全部窗口
        
 

标签:视频,get,python,frame,cap,cv2,opencv,摄像头
来源: https://blog.csdn.net/qq_44233281/article/details/118927704

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有