OpenCV_Python API 官方文档学习_ cv2调用摄像头

官方的文档:

Goal

  • Learn to read video, display video and save video.
  • Learn to capture from Camera and display it.
  • You will learn these functions : cv2.VideoCapture()cv2.VideoWriter()

目的有3个:

1. 学习读取、显示、以及保存视频文件

2. 学习从摄像头捕捉视频并显示、

3. 学习cv2.VideoCapture()cv2.VideoWriter()这两个函数

    通常,我们必须用相机捕捉实时流。OpenCV提供了一个非常简单的接口。让我们从摄像机中获取一个视频(如,笔记本的摄像头),将它转换成灰度视频并显示出来。只是一个简单的任务就可以开始了。

    要捕获视频,需要创建一个VideoCapture对象。它的参数可以是设备索引,也可以是视频文件的名称。设备索引只是指定哪个摄像机的数字。正常情况下,我们只有一台相机,所以只需传递0(或-1)。您可以通过传递1来选择第二个相机等等。在那之后,你可以一条条地捕捉。但最后别忘了释放抓捕。

代码:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    #  一帧一帧的去捕捉视频
    ret, frame = cap.read()

    # 在此处可以对每帧捕捉的视频进行操作。
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # 将每帧处理完的图像显示出来
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 结束之后,释放捕捉,销毁窗口
cap.release()
cv2.destroyAllWindows()

PS:

     cap.read() 返回一个布尔类型值(True/false)。如果frame被正确地读取,则为True。我们可以通过检查这个返回值来检查视频是否加载正确。

    有时,Cap可能没有初始化捕获。在这种情况下,此代码显示错误。您可以检查它是否由 cap.isOpened()方法初始化。如果返回True,否则,使用cap.open()打开它。

    您还可以使用cap.get(propId)方法访问该视频的一些功能,其中propId是从0到18之间的一个数字。每个数字表示视频的一个属性(如果它适用于该视频),完整的详细信息看下图(我就不一一介绍了,有兴趣的同学可以自己翻译一下)。其中一些值可以使用cap.set(propId,value)进行修改。值是您想要的新值。

OpenCV_Python API 官方文档学习_ cv2调用摄像头_第1张图片

    例如,我可以通过cap.get(3)和cap.get(4)检查帧的宽度和高度。默认情况下,它给我640x480。但是我想把它修改成320x240。只需使用ret=cap.set(3,320)和ret=cap.set(4,240)。

    如果遇到错误,请确保使用任何其他相机应用程序相机工作正常。(也就是说看看是不是你的摄像头有问题了- -#!)



你可能感兴趣的:(OpenCV)