【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.pswp.cn/web/65276.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65276.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65276.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GO隨想:GO的并發等待

協程并發等待技術——WaitGroup 類型和 errgroup 包 waitgroup 阻塞等待多個并發任務執行完成。WaitGroup 類型主要包含下面幾個方法。 func (wg *WaitGroup) Add(delta int) func (wg *WaitGroup) Done() func (wg *WaitGroup) Wait() 第一個是 Add 方法,在任務運…

深入理解Mybatis原理》MyBatis的sqlSessi

sqlSessionFactory 與 SqlSession 正如其名,Sqlsession對應著一次數據庫會話。由于數據庫會話不是永久的,因此Sqlsession的生命周期也不應該是永久的,相反,在你每次訪問數據庫時都需要創建它(當然并不是說在Sqlsession…

《HarmonyOS第一課》煥新升級,賦能開發者快速掌握鴻蒙應用開發

隨著HarmonyOS NEXT發布,鴻蒙生態日益壯大,廣大開發者對于系統化學習平臺和課程的需求愈發強烈。近日,華為精心打造的《HarmonyOS第一課》全新上線,集“學、練、考”于一體,憑借多維融合的教學模式與系統課程設置&…

springboot集成整合工作流,activiti審批流,整合實際案例,流程圖設計,流程自定義,表單配置自定義,代碼demo流程

前言 activiti工作流引擎項目,企業erp、oa、hr、crm等企事業辦公系統輕松落地,一套完整并且實際運用在多套項目中的案例,滿足日常業務流程審批需求。 一、項目形式 springbootvueactiviti集成了activiti在線編輯器,流行的前后端…

《探秘計算機視覺與深度學習:開啟智能視覺新時代》

《探秘計算機視覺與深度學習:開啟智能視覺新時代》 一、追溯起源:從萌芽到嶄露頭角二、核心技術:解鎖智能視覺的密碼(一)卷積神經網絡(CNN):圖像識別的利器(二&#xff0…

設計模式-結構型-適配器模式

在軟件開發中,隨著系統的不斷擴展和模塊的不斷增加,往往會遇到不同模塊之間接口不兼容的情況。此時,如果我們能通過某種方式將一個接口轉化為另一個接口,那么開發工作將變得更加靈活和高效。適配器模式(Adapter Patter…

Vmware安裝centos

用來記錄自己安裝的過程 一、創建虛擬機安裝centos鏡像 點擊完成后,等待一會會進入centos的系統初始化界面 二、centos初始化配置 三、配置網絡 1、虛擬網絡編輯器,開啟VMnet1、VMnet8的DHCP vmware左上角工具欄,點擊【編輯】->【虛擬網…

Unity-Mirror網絡框架-從入門到精通之Chat示例

文章目錄 前言Chat聊天室Authentication授權ChatAuthenticatorChat示例中的授權流程聊天Chat最后 前言 在現代游戲開發中,網絡功能日益成為提升游戲體驗的關鍵組成部分。Mirror是一個用于Unity的開源網絡框架,專為多人游戲開發設計。它使得開發者能夠輕…

知識問答系統

文章目錄 早期的問答系統基于信息檢索的問答系統基于知識庫的問答系統CommunityQA/FAQ-QA:基于問答對匹配的問答系統Hybrid QA Framework混合問答系統框架早期的問答系統 20世紀六七十年代,早期的NLIDB(Natural Language Interface toData bBase)伴隨著人工智能的研發逐步興起…

第3章:Go語言復合數據類型

第3章:Go語言復合數據類型 1. 數組 1.1 數組聲明和初始化 // 方式1:聲明固定長度數組 var numbers [5]int // 聲明一個包含5個整數的數組,默認零值// 方式2:初始化數組 arr1 : [5]int{1, 2, 3, 4, 5} // 完全初始化// 方式3&…

uniapp-vue3 實現, 一款帶有絲滑動畫效果的單選框組件,支持微信小程序、H5等多端

采用 uniapp-vue3 實現, 是一款帶有絲滑動畫效果的單選框組件,提供點狀、條狀的動畫過渡效果,支持多項自定義配置,適配 web、H5、微信小程序(其他平臺小程序未測試過,可自行嘗試) 可到插件市場下載嘗試&…

深度學習GPU服務器推薦:打造高效運算平臺

文章來源于百家號:GPU服務器廠家 在深度學習和人工智能領域,一個高性能的GPU服務器是研究和開發工作的關鍵。今天,我們將為大家推薦一款基于詳細硬件配置表的深度學習GPU服務器,它專為高效運算和數據處理而設計。 一、機箱設計 …

2025第1周 | JavaScript中的正則表達式

目錄 1. 正則表達式是個什么東東?1.1 怎么定義正則1.2 對象字面量方式1.3 類創建方式 2. 怎么使用2.1 實例方法2.1.1 exec方法2.1.2 test方法 2.2 字符串中的方法2.2.1 match/matchAll2.2.2 replace/replaceAll2.2.3 split2.2.4 search 3. 規則3.1 修飾符3.2 字符類…

大模型LLM-Prompt-OPTIMAL

1 OPTIMAL OPTIMAL 具體每項內容解釋如下: Objective Clarity(目標清晰):明確定義任務的最終目標和預期成果。 Purpose Definition(目的定義):闡述任務的目的和它的重要性。 Information Gat…

78、使用愛芯派2_AX630C開發板 3.2T高有效算力 低功耗 支持AI-ISP真黑光實驗

基本思想:使用愛心元智最新的版本開發板進行實驗 AX630C、AX620Q 都是 620E 這一代 一、參考這個官方教程,先把代碼在本地交叉編譯完成 https://github.com/AXERA-TECH/ax620e_bsp_sdk 然后在拷貝到620c設備上 root@ax630c:~/ax620e_bsp_sdk/msp/out/arm64_glibc/bin# ./…

C語言 掃雷程序設計

目錄 1.main函數 2.菜單打印menu函數 3.游戲game函數 4.宏定義 5.界面初始化 6.打印界面 7.設置雷 8.統計排查坐標周圍雷的個數 9.排查雷 10.總代碼 test.c代碼 game.h代碼 game.c代碼 結語: 一個簡單的掃雷游戲,通過宏定義可以修改行列的…

《高速公路警察模擬器》

一個引人入勝的警察故事在等著你,你可以選擇扮演男警官或女警官。公路警察模擬器》擁有休閑和模擬兩種游戲模式,將兩個世界的精華結合在一起:在身臨其境的虛擬環境中自由駕駛和行走,在故事驅動的游戲中解決各種令人興奮的案件。探…

EasyGBS小知識:如何確保攝像機的網絡連接穩定?

在當今數字化時代,視頻監控系統已成為保障安全和提高效率的重要工具。然而,攝像機的網絡連接穩定性直接關系到監控系統的可靠性和有效性。為了確保視頻監控系統能夠持續穩定地運行,我們需要從硬件、網絡設置、軟件與監控以及安裝與維護等多個…

微服務-Eureka

Eureka的作用 使用RestTemplate完成遠程調用需要被調用者的ip和端口,從而能夠發起http請求,但是如果有很多個實例也更加不能有效的處理,而且我們又該如何知道這些實例是否健康呢。所以就有了很多的注冊中心比如Eureka、Nacos等等。 服務注…

LabVIEW軟件侵權分析與應對

問:如果涉及到LabVIEW軟件的仿制或模仿,特別是在功能、界面等方面,如何判斷是否構成侵權?該如何應對? 答:LabVIEW軟件的侵權問題,尤其是在涉及到仿制或模仿其功能、界面、設計等方面&#xff0…