【发布时间】:2019-12-29 00:36:26
【问题描述】:
我正在开发一个集成了网络摄像头和 OpenCV 的 Django 项目。对于网络摄像头访问,我使用以下代码。如果我使用Ctrl + C 结束正在运行的服务器,可以释放网络摄像头,但如果服务器在代码更改后重新加载,则网络摄像头无法正常释放,因此将不可用。如何检测热重载以便正确关闭网络摄像头?
我知道禁止热重新加载的选项,但这很不舒服。有什么我可以通过编程实现的选项吗?
class VideoCamera(object):
def __init__(self):
self.video = None
def __del__(self):
if self.video is not None and self.video.isOpened():
self.video.release()
def get_frame(self):
try:
self.video = cv2.VideoCapture(0)
success, image = self.video.read()
self.video.release()
ret, jpeg = cv2.imencode('.jpg', image)
return jpeg.tobytes()
except (SystemExit, KeyboardInterrupt, Exception) as e:
self.video.release()
raise e
【问题讨论】: