使用 OpenCV-Python 检查相机是否打开
OpenCV (开源计算机视觉)是一个计算机视觉库,包含对图像或视频执行操作的各种功能。 OpenCV 库可用于对视频执行多种操作。
在使用 OpenCV 在Python中编写代码时,我们可能不确定远程端的摄像头是否已打开并正常工作。摄像机在安全和视频监控系统等领域发挥着至关重要的作用。在实时视频监控系统中,为了确保摄像头打开并正常工作,我们有 OpenCV 的isOpened()
。文章背后的想法是检查摄像头是否连接,如果发现摄像头断开连接,则会向管理员或相关人员发送邮件。
1.检查相机是否打开/连接。
方法:
- 导入必要的库(NumPy 和 OpenCV)
- 启动相机。在这里,
VideoCapture()-0
表示内置网络摄像头,而 1 表示使用外部网络摄像头。 - 如果相机打开,我们将循环帧,而在另一种情况下,一条消息“警报! Camera disconnected”将打印在终端窗口上。
下面是实现。
# Python program to check
# whether the camera is opened
# or not
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
while True:
ret, img = cap.read()
cv2.imshow('img', img)
if cv2.waitKey(30) & 0xff == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
else:
print("Alert ! Camera disconnected")
2.如果发现相机断开/未打开,发送邮件。
方法:
- 导入必要的库(smtplib 是发送邮件的Python库)。
- 与服务器建立连接并登录帐户。
- 指定收件人的电子邮件地址和要发送的消息(在这种情况下为“警报!相机已断开!”)。
- 发送邮件后,关闭连接或退出会话。
下面是实现。
# Python program to send
# the mail
import smtplib
conn = smtplib.SMTP('smtp.gmail.com', 587)
conn.ehlo()
conn.starttls()
# Enter the sender's details
conn.login('Enter sender \'s gmail address',
'Enter sender\'s password')
conn.sendmail('Enter sender\'s gmail address',
'Enter Receiver\'s gmail address',
'Enter message to be sent')
conn.quit()