亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python+OpenCV實現(xiàn)火焰檢測

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

項目解釋

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

以下是它的功能的簡單描述:

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

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

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

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

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

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

7.顯示視頻:代碼顯示處理后的幀,并在檢測到的火災(zāi)周圍繪制矩形。視頻將一直顯示,直到您按“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)建布爾變量

# 定義播放警報聲音的函數(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實現(xiàn)火焰檢測的詳細(xì)內(nèi)容,更多關(guān)于Python OpenCV火焰檢測的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python的scrapy框架之Pipeline文件的用法詳解

    python的scrapy框架之Pipeline文件的用法詳解

    這篇文章主要介紹了python的scrapy框架之Pipeline文件的用法詳解,Pipeline是一個獨立的模塊,用于處理從Spider中提取的Item對象,實現(xiàn)對數(shù)據(jù)的進(jìn)一步處理、存儲和清洗等操作,下面將詳細(xì)介紹Scrapy框架中Pipeline的用法,需要的朋友可以參考下
    2023-10-10
  • pytorch中.numpy()、.item()、.cpu()、.detach()以及.data的使用方法

    pytorch中.numpy()、.item()、.cpu()、.detach()以及.data的使用方法

    這篇文章主要給大家介紹了關(guān)于pytorch中.numpy()、.item()、.cpu()、.detach()以及.data的使用方法,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-08-08
  • vim自動補全插件YouCompleteMe(YCM)安裝過程解析

    vim自動補全插件YouCompleteMe(YCM)安裝過程解析

    這篇文章主要介紹了vim自動補全插件YouCompleteMe(YCM)安裝過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Django跨域請求無法傳遞Cookie的解決

    Django跨域請求無法傳遞Cookie的解決

    這篇文章主要介紹了Django跨域請求無法傳遞Cookie的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Python PyMySQL操作MySQL數(shù)據(jù)庫的方法詳解

    Python PyMySQL操作MySQL數(shù)據(jù)庫的方法詳解

    PyMySQL是一個用于Python編程語言的純Python MySQL客戶端庫,它遵循Python標(biāo)準(zhǔn)DB API接口,并提供了許多方便的功能,本文就來和大家簡單介紹一下吧
    2023-05-05
  • python bottle框架支持jquery ajax的RESTful風(fēng)格的PUT和DELETE方法

    python bottle框架支持jquery ajax的RESTful風(fēng)格的PUT和DELETE方法

    下面小編就為大家?guī)硪黄猵ython bottle框架支持jquery ajax的RESTful風(fēng)格的PUT和DELETE方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 四步教你學(xué)會打包一個新的Python模塊

    四步教你學(xué)會打包一個新的Python模塊

    當(dāng)你安裝應(yīng)用程序時,通常是安裝一個軟件包,其中包含應(yīng)用程序的可執(zhí)行代碼和重要文件。在?Linux上,軟件一般被打包成RPM或DEB等格式,然而幾乎每天都有新的Python模塊發(fā)布,因此你很容易遇到一個尚未打包的Python模塊。本文教你四步打包一個新的Python模塊
    2022-09-09
  • python清除字符串里非數(shù)字字符的方法

    python清除字符串里非數(shù)字字符的方法

    這篇文章主要介紹了python清除字符串里非數(shù)字字符的方法,涉及Python使用re模塊正則替換操作字符串的技巧,需要的朋友可以參考下
    2015-07-07
  • django框架forms組件用法實例詳解

    django框架forms組件用法實例詳解

    這篇文章主要介紹了django框架forms組件用法,結(jié)合實例形式詳細(xì)分析了Django框架forms組件源碼及常用操作方法與使用注意事項,需要的朋友可以參考下
    2019-12-12
  • python使用socket實現(xiàn)圖像傳輸功能

    python使用socket實現(xiàn)圖像傳輸功能

    這篇文章主要為大家詳細(xì)介紹了python使用socket實現(xiàn)圖像傳輸功能,linux服務(wù)器與win10主機間的圖像傳輸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評論