最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+OpenCV實(shí)現(xiàn)火焰檢測(cè)

 更新時(shí)間:2024年10月30日 11:12:24   作者:joker_data_pink  
本文主要為大家介紹了一個(gè)使用Python,OpenCV,線程,聲音和電子郵件功能的火災(zāi)探測(cè)系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下

項(xiàng)目解釋

此 Python 代碼是使用 OpenCV、線程、聲音和電子郵件功能的火災(zāi)探測(cè)系統(tǒng)的簡(jiǎn)單示例。

以下是它的功能的簡(jiǎn)單描述:

1.導(dǎo)入庫(kù):代碼首先導(dǎo)入必要的庫(kù): cv2:用于圖像和視頻處理,特別是用于檢測(cè)火災(zāi)。 threading:用于同時(shí)運(yùn)行代碼的某些部分(在后臺(tái))。 playsound:用于播放報(bào)警聲音。 smtplib:用于發(fā)送電子郵件。

2.加載訓(xùn)練模型:代碼加載預(yù)訓(xùn)練的機(jī)器學(xué)習(xí)模型(XML 文件),該模型可以檢測(cè)圖像中的火災(zāi)。

3.設(shè)置視頻源:設(shè)置視頻輸入源,可以是筆記本電腦內(nèi)置攝像頭,也可以是外接USB 攝像頭。該代碼當(dāng)前配置為從名為“fire2.mp4”的文件中讀取視頻。

4.播放報(bào)警聲音:定義播放報(bào)警聲音的函數(shù)。該函數(shù)在后臺(tái)運(yùn)行(線程)并播放名為“fire_alarm.mp3”的警報(bào)聲音文件。

5.發(fā)送電子郵件:send_mail_function()定義了另一個(gè)函數(shù)來(lái)發(fā)送電子郵件。它使用 Gmail 的 SMTP 服務(wù)器向指定收件人發(fā)送有關(guān)火災(zāi)檢測(cè)的警告電子郵件。代碼中需要提供發(fā)件人的電子郵件和密碼。

6.主循環(huán):主循環(huán)處理視頻的每一幀。它執(zhí)行以下操作:將幀轉(zhuǎn)換為灰度以便于處理。使用加載的模型檢測(cè)框架中的火災(zāi)。如果檢測(cè)到火災(zāi),它會(huì)用藍(lán)色矩形突出顯示該區(qū)域。如果第一次檢測(cè)到火災(zāi)(由 控制runOnce),則會(huì)觸發(fā)警報(bào)聲并使用線程發(fā)送電子郵件。警報(bào)和電子郵件功能在后臺(tái)運(yùn)行。一旦警報(bào)和電子郵件被觸發(fā)一次,系統(tǒng)就不會(huì)為后續(xù)發(fā)生火災(zāi)的幀重復(fù)此過(guò)程。

7.顯示視頻:代碼顯示處理后的幀,并在檢測(cè)到的火災(zāi)周?chē)L制矩形。視頻將一直顯示,直到您按“q”鍵。

代碼示例

import cv2
import threading
import playsound
import smtplib

# 加載訓(xùn)練好的 XML 文件
fire_cascade = cv2.CascadeClassifier('fire_detection_cascade_model.xml')

# 初始化攝像頭
vid = cv2.VideoCapture(0)  # 使用筆記本內(nèi)置攝像頭,索引為 0
runOnce = False  # 創(chuàng)建布爾變量

# 定義播放警報(bào)聲音的函數(shù)
def play_alarm_sound_function():
    playsound.playsound('fire_alarm.mp3', True)
    print("Fire alarm end")

# 定義發(fā)送郵件的函數(shù)
def send_mail_function():
    recipientmail = "add recipients mail"
    recipientmail = recipientmail.lower()

    try:
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.ehlo()
        server.starttls()
        server.login("add senders mail", 'add senders password')
        server.sendmail('add senders mail', recipientmail, "Warning: Fire accident has been reported")
        print("Alert mail sent successfully to {}".format(recipientmail))
        server.close()
    except Exception as e:
        print(e)

while True:
    Alarm_Status = False
    ret, frame = vid.read()

    if not ret:
        print("Failed to grab frame")
        break

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    fire = fire_cascade.detectMultiScale(gray, 1.2, 5)

    # 增加調(diào)試輸出
    print(f"Detected fire regions: {len(fire)}")

    # 繪制火焰矩形框
    for (x, y, w, h) in fire:
        cv2.rectangle(frame, (x-20, y-20), (x+w+20, y+h+20), (0, 255, 0), 2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = frame[y:y+h, x:x+w]

        print("Fire alarm initiated")
        threading.Thread(target=play_alarm_sound_function).start()

        if not runOnce:
            print("Mail send initiated")
            threading.Thread(target=send_mail_function).start()
            runOnce = True
        else:
            print("Mail is already sent once")

    cv2.imshow('frame', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 釋放資源
vid.release()
cv2.destroyAllWindows()

效果示例

以上就是Python+OpenCV實(shí)現(xiàn)火焰檢測(cè)的詳細(xì)內(nèi)容,更多關(guān)于Python OpenCV火焰檢測(cè)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python讀取Excel數(shù)據(jù)并進(jìn)行可視化分析

    Python讀取Excel數(shù)據(jù)并進(jìn)行可視化分析

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)讀取Excel數(shù)據(jù)并進(jìn)行可視化分析,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2025-08-08
  • Python實(shí)現(xiàn)動(dòng)態(tài)柱狀圖的繪制

    Python實(shí)現(xiàn)動(dòng)態(tài)柱狀圖的繪制

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)動(dòng)態(tài)柱狀圖的繪制的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)與借鑒價(jià)值,需要的可以參考一下
    2022-12-12
  • Python 中的異步與同步深度解析(實(shí)踐記錄)

    Python 中的異步與同步深度解析(實(shí)踐記錄)

    在Python編程世界里,異步和同步的概念是理解程序執(zhí)行流程和性能優(yōu)化的關(guān)鍵,這篇文章將帶你深入了解它們的差異,以及阻塞和非阻塞的特性,同時(shí)通過(guò)實(shí)際代碼示例來(lái)加深理解,感興趣的朋友一起看看吧
    2025-03-03
  • Python對(duì)時(shí)間序列進(jìn)行數(shù)據(jù)分析與可視化的實(shí)戰(zhàn)指南

    Python對(duì)時(shí)間序列進(jìn)行數(shù)據(jù)分析與可視化的實(shí)戰(zhàn)指南

    掌握時(shí)間序列分析技術(shù),能幫助我們從數(shù)據(jù)中挖掘出隱藏的趨勢(shì),周期和異常,本文將以股票價(jià)格數(shù)據(jù)為例,通過(guò)Python實(shí)現(xiàn)從數(shù)據(jù)加載到可視化分析的全流程,有需要的可以了解下
    2025-11-11
  • python3中確保枚舉值代碼分析

    python3中確保枚舉值代碼分析

    在本篇文章里小編給大家整理的是一篇關(guān)于python3中確保枚舉值代碼分析內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Python基礎(chǔ)之函數(shù)原理與應(yīng)用實(shí)例詳解

    Python基礎(chǔ)之函數(shù)原理與應(yīng)用實(shí)例詳解

    這篇文章主要介紹了Python基礎(chǔ)之函數(shù)原理與應(yīng)用,結(jié)合具體實(shí)例形式詳細(xì)分析了Python函數(shù)的定義、原理、參數(shù)、返回值、嵌套等相關(guān)概念與使用技巧,需要的朋友可以參考下
    2020-01-01
  • Matplotlib中rcParams使用方法

    Matplotlib中rcParams使用方法

    這篇文章主要介紹了Matplotlib中rcParams使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python程序打包成exe的保姆教程

    Python程序打包成exe的保姆教程

    本文主要介紹了使用PyInstaller將Python程序打包成可執(zhí)行文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Python求兩個(gè)文本文件以行為單位的交集、并集與差集的方法

    Python求兩個(gè)文本文件以行為單位的交集、并集與差集的方法

    這篇文章主要介紹了Python求兩個(gè)文本文件以行為單位的交集、并集與差集的方法,涉及Python文本文件與集合運(yùn)算的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • 詳解Python如何通過(guò)文件后綴整理文件夾

    詳解Python如何通過(guò)文件后綴整理文件夾

    這篇文章主要為大家詳細(xì)介紹了Python如何通過(guò)文件后綴實(shí)現(xiàn)整理文件夾功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02

最新評(píng)論

山阳县| 旌德县| 新丰县| 岑巩县| 东平县| 贺州市| 贵德县| 张家口市| 井研县| 庆安县| 黔西县| 张家口市| 新闻| 沙湾县| 玛多县| 沾益县| 浙江省| 大方县| 台东县| 钦州市| 昌都县| 临泽县| 左云县| 砚山县| 明光市| 莒南县| 鄂托克前旗| 玉树县| 电白县| 独山县| 泸溪县| 柏乡县| 霍邱县| 酉阳| 桐庐县| 新沂市| 轮台县| 枝江市| 杭锦后旗| 淮滨县| 南华县|