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()
现在我们可以看到摄像头正在捕捉实时视频。
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