zoukankan      html  css  js  c++  java
  • OpenCV-Python入门教程2-打开摄像头

    一、打开摄像头

    import cv2
    # 打开摄像头并灰度化显示
    capture = cv2.VideoCapture(0)
    while(True):
        # 获取一帧
        ret, frame = capture.read()
        # 将这帧转换为灰度图
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        cv2.imshow('frame', gray)
        # 如果输入q,则退出
        if cv2.waitKey(1) == ord('q'):
            break

    cv2.VideoCapture(0)创建VideoCapture对象,参数0表示摄像头编号,如果你有两个摄像头,也可以传入1

    # 获取捕获的分辨率
    # propId可以直接写数字,也可以用OpenCV的符号表示
    width, height = capture.get(3), capture.get(4)
    print(width, height)
    # 以原分辨率的一倍来捕获
    capture.set(cv2.CAP_PROP_FRAME_WIDTH, width * 2)
    capture.set(cv2.CAP_PROP_FRAME_HEIGHT, width * 2)
    640.0 480.0
    我的摄像头分辨率是640 x 480.通过cap.get(propId)可以获取摄像头的一些属性。比如分辨率、亮度和对比度等。propId是从0~18的数字,我例举几个:
    cv::VideoCaptureProperties { 
      cv::CAP_PROP_POS_MSEC =0, 
      cv::CAP_PROP_POS_FRAMES =1, 
      cv::CAP_PROP_POS_AVI_RATIO =2, 
      cv::CAP_PROP_FRAME_WIDTH =3, 
      cv::CAP_PROP_FRAME_HEIGHT =4, 
      cv::CAP_PROP_FPS =5, 
      cv::CAP_PROP_FOURCC =6, 
      cv::CAP_PROP_FRAME_COUNT =7, 
      cv::CAP_PROP_FORMAT =8, 
      cv::CAP_PROP_MODE =9, 
      cv::CAP_PROP_BRIGHTNESS =10, 
    3:高度, 4:宽度, 5:帧率, 8:格式, 9:模式。。。
    想了解完整的属性列表可以参考:
    VideoCaptureProperties
    也可以使用cap.set(propId, value)来修改属性值

    二、播放本地视频

    # 播放本地视频
    capture = cv2.VideoCapture('4.视频展台的使用视频.mp4')
    while(capture.isOpened()):
        ret, frame = capture.read()
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        cv2.imshow('frame', gray)
        if cv2.waitKey(30) == ord('q'):
            break

    和打开摄像头一样,把摄像头编号换成视频的路径就可以播放本地视频。cv2.waitKey的参数0表示无限等待,数值越大,视频播放越慢,反之,则越快。通常设置25到30

    三、录制视频

    保存图片使用的是cv2.imwrite(),要保存视频,需要创建一个VideoWriter对象,需要传入四个参数

    • 输出的文件名,如’output.avi’
    • 编码方式FourCC码
    • 帧率FPS
    • 要保存的分辨率大小
    FourCC是用来指定视频编码方式的四字节码
    capture = cv2.VideoCapture(0)
    # 定义编码方式并创建VideoWriter对象
    fourcc = cv2.VideoWriter_fourcc(*'MJPG')
    outfile = cv2.VideoWriter('output.avi', fourcc, 25., (640, 480))
    while(capture.isOpened()):
        ret, frame = capture.read()
        if ret:
            outfile.write(frame)  # 写入文件
            cv2.imshow('frame', frame)
            if cv2.waitKey(1) == ord('q'):
                break
        else:
            break

    四、小结

     使用cv2.VideoCapture()创建视频对象,然后在循环中一帧一阵显示图像

    cap.get(propId)获取视频属性,cap.set(propId, value)设置视频属性

    cv2.VideoWriter()创建视频写入对象,用来录制、保存视频

    参考网址:https://tianchi.aliyun.com/course/courseConsole?courseId=40992&chapterIndex=1&sectionIndex=3

    
    
    
  • 相关阅读:
    如何使用PL/SQL工具批量导出表、存储过程、序列
    oracle如何导出和导入数据库/表
    linux安装nginx
    Linux下nginx反向代理服务器安装与配置实操
    StringTokenizer
    mapreduce join
    mapreduce计数器
    hadoop分布式系统架构详解
    进程与线程
    hadoop第一个例子
  • 原文地址:https://www.cnblogs.com/gezhuangzhuang/p/10291177.html
Copyright © 2011-2022 走看看