当前位置: 首页 > news >正文

【OpenCV】使用Python和OpenCV实现火焰检测

1、 项目源码和结构(转) 

https://github.com/mushfiq1998/fire-detection-python-opencv

2、 运行环境

# 安装playsound:用于播放报警声音

pip install playsound

# 安装opencv-python:cv2用于图像和视频处理,特别是用于检测火灾

pip install opencv-python

3、 fireDetection.py

import cv2         # Library for openCV
import threading   # Library for threading -- which allows code to run in backend
import playsound   # Library for alarm sound
import smtplib     # Library for email sending# To access xml file which includes positive and negative images of fire. 
# (Trained images) File is also provided with the code.
fire_cascade = cv2.CascadeClassifier('fire_detection_cascade_model.xml')# To start camera this command is used "0" for laptop inbuilt camera 
# and "1" for USB attahed camera
# vid = cv2.VideoCapture(0) vid = cv2.VideoCapture("videos\\fire2.mp4")
runOnce = False # created boolean# defined function to play alarm post fire detection using threading
def play_alarm_sound_function(): # to play alarm # mp3 audio file is also provided with the code.playsound.playsound('fire_alarm.mp3',True) print("Fire alarm end") # to print in consol# Defined function to send mail post fire detection using threading
def send_mail_function(): recipientmail = "add recipients mail" # recipients mailrecipientmail = recipientmail.lower() # To lower case mailtry:server = smtplib.SMTP('smtp.gmail.com', 587)server.ehlo()server.starttls()# Senders mail ID and passwordserver.login("add senders mail", 'add senders password') # recipients mail with mail messageserver.sendmail('add recipients mail', recipientmail, "Warning fire accident has been reported") # to print in consol to whome mail is sentprint("Alert mail sent sucesfully to {}".format(recipientmail))server.close() ## To close serverexcept Exception as e:print(e) # To print error if anywhile(True):Alarm_Status = False# Value in ret is True # To read video frameret, frame = vid.read() # To convert frame into gray colorgray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # to provide frame resolutionfire = fire_cascade.detectMultiScale(frame, 1.2, 5) ## to highlight fire with square for (x,y,w,h) in fire:cv2.rectangle(frame,(x-20,y-20),(x+w+20,y+h+20),(255,0,0),2)roi_gray = gray[y:y+h, x:x+w]roi_color = frame[y:y+h, x:x+w]print("Fire alarm initiated")# To call alarm threadthreading.Thread(target=play_alarm_sound_function).start()  if runOnce == False:print("Mail send initiated")# To call alarm threadthreading.Thread(target=send_mail_function).start() runOnce = Trueif runOnce == True:print("Mail is already sent once")runOnce = Truecv2.imshow('frame', frame)if cv2.waitKey(1) & 0xFF == ord('q'):break
  • 加载训练模型:代码加载预训练的机器学习模型fire_detection_cascade_model.xml(XML 文件),该模型可以检测图像中的火灾。
  • 设置视频源:设置视频输入源,可以是笔记本电脑内置摄像头,也可以是外接USB 摄像头。该代码当前配置为从名为“fire2.mp4”的文件中读取视频。
  • 播放报警声音:定义播放报警声音的函数play_alarm_sound_function(),该函数在后台运行(线程)并播放名为“fire_alarm.mp3”的警报声音文件。
  • 发送电子邮件:send_mail_function()定义了另一个函数来发送电子邮件。它使用 Gmail 的 SMTP 服务器向指定收件人发送有关火灾检测的警告电子邮件。代码中需要提供发件人的电子邮件和密码。

4、结果 

http://www.lryc.cn/news/516308.html

相关文章:

  • SpringCloud(二)--SpringCloud服务注册与发现
  • 国内Ubuntu环境Docker部署CosyVoice
  • 嵌入式linux系统中QT信号与槽实现
  • 科研绘图系列:R语言单细胞数据常见的可视化图形
  • 使用 C++ 和函数式编程构建高效的 AI 模型
  • guestfish/libguestfs镜像管理工具简介
  • 如何在centos中进行有效的网络管理
  • Oracle清空表后如何恢复数据
  • ElasticSearch基础-文章目录
  • SpringMVC(二)原理
  • Selenium 自动化,如何下载正确的 ChromeDriver
  • [Linux]redis5.0.x升级至7.x完整操作流程
  • Java字符编码与正则表达式深度解析
  • 【C++】B2099 矩阵交换行
  • 论文解读 | NeurIPS'24 IRCAN:通过识别和重新加权上下文感知神经元来减轻大语言模型生成中的知识冲突...
  • edeg插件/扩展推荐:助力生活工作
  • 基于Python读取ZIP和TAR格式压缩包教程
  • 懒人不下床型遥控方案--手机对电脑的简单遥控(无收费方案)
  • 人工智能知识分享第八天-机器学习_泰坦尼克生存预估线性回归和决策树回归对比案例
  • html中下拉选框的基本实现方式及JavaScript动态修改选项内容情况总结
  • sql server期末复习
  • LabVIEW语言学习过程是什么?
  • 小程序租赁系统开发的优势与应用前景分析
  • 『SQLite』安装与基本命令语法
  • Unity-Mirror网络框架-从入门到精通之Benchmark示例
  • 毕业项目推荐:基于yolov8/yolov5的行人检测识别系统(python+卷积神经网络)
  • 今日头条ip属地根据什么显示?不准确怎么办
  • FPGA设计-如何使用后端工具
  • 苍穹外卖04——Redis初入门 在店铺打烊or营业状态管理功能中的使用
  • 【MySQL关于数据库和表结构的增删查改】