• opencv之调用摄像头


    基础知识

    # cap.set(propId, value)
    # 设置视频参数: propId - 设置的视频参数, value - 设置的参数值
    
    # cap.isOpened() 返回 true/false, 检查摄像头初始化是否成功
    
    # cap.read()
    """ 
    返回两个值
        先返回一个布尔值, 如果视频读取正确, 则为 True, 如果错误, 则为 False; 
        也可用来判断是否到视频末尾;
        
        再返回一个值, 为每一帧的图像, 该值是一个三维矩阵;
        
        通用接收方法为: 
            ret,frame = cap.read();
            ret: 布尔值;
            frame: 图像的三维矩阵;
            这样 ret 存储布尔值, frame 存储图像;
            
            若使用一个变量来接收两个值, 如:
                frame = cap.read()
            则 frame 为一个元组, 原来使用 frame 处需更改为 frame[1]
    """
    
    #cv2.waitKey(1) 读取按键,每帧数据延时 1ms, 延时为0, 读取的是静态帧
    
    #cv2.imwrite("test.jpg", img_camera)保存图像
    
    #释放摄像头 cap.release()
    #销毁窗口 cv2.destroyAllWindows()

    1、代码案例

    # coding = utf-8
    import cv2
    import os
    import shutil
    def useCamera():
        # 获取摄像头
        capture = cv2.VideoCapture(0)
        capture.set(3, 480)
        while capture.isOpened():
            # 摄像头打开,读取图像
            flag, image = capture.read()
            cv2.imshow("image", image)
            k = cv2.waitKey(1)
            if k == ord('s'):
                cv2.imwrite("test.jpg", image)
            elif k == ord("q"):
                break
        # 释放摄像头
        capture.release()
        # 关闭所有窗口
        cv2.destroyAllWindows()
    
    if __name__ == '__main__':
        useCamera()

    完毕!

  • 相关阅读:
    Hystrix高可用系统容错框架,资源隔离,熔断,限流
    Leecode no.25 K 个一组翻转链表
    no.1 Web浏览器
    源码解析-JavaNIO之Buffer,Channel
    Leecode no.24 两两交换链表中的节点
    Kafka RocketMQ 是推还是拉?
    Leecode no.23 合并K个升序链表
    图解计算机底层IO过程及JavaNIO
    Leecode no.21 合并两个有序链表
    AcWing每日一题--摘花生
  • 原文地址:https://www.cnblogs.com/ywjfx/p/11398773.html
Copyright © 2020-2023  润新知