OpenCV 网络摄像头

Salman Mehmood 2024年2月15日
OpenCV 网络摄像头

在这个简短的演示中,我们将学习如何在 Python 和 OpenCV 的帮助下访问网络摄像头并显示实时提要。

在 Python 和 OpenCV 的帮助下访问网络摄像头

每当我们从事任何需要访问实时摄像头馈送的计算机视觉项目时,如果我们想要进行面罩检测,或者我们设计一个想要进行社交距离检测的项目。

在这种情况下,我们必须访问相机的实时信息,并且无论我们从相机接收到什么实时信息,下一条指令都可以用于不同的目的。

让我们看一下使用 OpenCV 访问实时摄像机源的代码。一旦我们导入 opencv 库,我们必须使用 opencv 库中的 VideoCapture() 方法。

它捕获来自不同来源的视频。它可以从你的本地计算机系统或笔记本电脑的摄像头中捕获视频,或者你可以从任何基于 IP 的摄像头中捕获视频。

我们必须在括号中提供视频捕获的来源。

WC = cv2.VideoCapture(0)

现在你可以看到我们提供了源 0,这意味着它将访问我们笔记本电脑的默认摄像头。如果我们想访问存储在计算机系统中的任何视频,我们可以将视频的完整路径作为字符串传递。

如果要访问任何基于 IP 的摄像机,则必须提供基于 IP 的摄像机的完整路径。我们考虑一个虚拟地址,它会是这样的。

WC = cv2.VideoCapture("https://3.4.5.6/cam2")

但在本文中,我们将尝试访问笔记本电脑的默认摄像头,为此,我们需要将源设置为 0。它将捕获来自摄像机的实时信息。

一旦我们捕获了视频,我们将它存储在一个对象中,然后,我们将尝试从视频中读取每一帧或从相机接收到的实时信息。

视频只不过是一系列图像,在计算机视觉领域,我们称之为帧。

现在我们将在 while 循环中编写一堆代码;它将无限地继续阅读相机的实时信息。我们使用 read() 方法从 WC 对象中读取帧,而该帧只是一个图像。

while True:
    # this will read images/frames one by one
    RET, F = WC.read()
    cv2.imshow("Live Feeds", F)

下一条指令在 imshow() 方法的帮助下显示这些图像,该方法有两个参数。一个是窗口名称,它将出现在右上角,第二个是图像的内容,numpy 数组。

在下一条指令中,我们接收来自实时摄像头的提要,它将继续在我们的程序中显示帧或图像。我们必须打破这个循环来停止这个无限循环或相机的实时馈送。

我们需要使用 v2.waitKey(1),如果我们提到我们在键盘上按下的键应该是退出 while 循环,它将保持窗口打开直到我们采取行动。

如果我们按下定义的键,它将自动停止我们从摄像机访问的实时源。

在代码的最后,我们释放了我们的 WC 对象。我们调用 destroyAllWindows() 方法,它将销毁我们打开的所有窗口以显示我们的实时提要。

import numpy as np
import cv2

# Capture video from storage/laptop camera/IP based camera
WC = cv2.VideoCapture(0)

while True:
    # this will read images/frames one by one
    RET, F = WC.read()
    cv2.imshow("Live Feeds", F)
    KEY = cv2.waitKey(1)  # wait for key press
    if KEY == ord("q"):
        break
WC.release()
cv2.destroyAllWindows()

现在我们可以看到摄像头正在捕捉实时视频。

使用 Python 和 OpenCV 访问网络摄像头

作者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn