日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

Python实现摄像头状态巡检

發(fā)布時(shí)間:2024/1/1 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python实现摄像头状态巡检 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這個(gè)需求是怎么來(lái)的呢?筆者看到部門(mén)同事要經(jīng)常檢查監(jiān)控?cái)z像頭是不是正常工作,需要登錄一個(gè)個(gè)主機(jī)來(lái)檢測(cè)畫(huà)面是不是偏了,發(fā)黑,過(guò)度發(fā)白等,其實(shí)是挺耗時(shí)間的,既然現(xiàn)在的設(shè)備都是IOT了,監(jiān)控鏡頭也是走網(wǎng)絡(luò)了,為什么Python不能自動(dòng)巡檢呢? 機(jī)會(huì)就是這么產(chǎn)生的。

在這個(gè)攝像頭巡檢的過(guò)程中,是使用了rtsp的協(xié)議,最關(guān)鍵的核心節(jié)點(diǎn)有兩個(gè):

1. 通過(guò)rtsp連接攝像頭獲取當(dāng)前的圖片,代碼如下:

def get_pic(info):

??? picturevalue=0

??? cam_no=info[0]

??? ip=info[1]

??? file_name='images\\'+info[0]+".jpg"

??? username='***************'

??? password=‘***************’

??? port="554"

??? try:

??????? cap = cv2.VideoCapture("rtsp://" + username + ":" + password+ "@" + ip? + ":" + port + "/Streaming/Channels/1")

??????? isOpened=cap.isOpened()

??????? print(isOpened)

??????? print(type(isOpened))

??????? print(file_name)

??????? if isOpened:

??? ????????ret, frame = cap.read()

??????????? cv2.imwrite(file_name, frame)

??????? cap.release()

??????? print('完成抓拍')

??????? picturevalue=get_pic_value(file_name)

??? except:

??????? picturevalue=str(0)

return cam_no,picturevalue

這里主要是通過(guò)CV調(diào)用攝像頭,獲取圖片并保存到指定路徑。

2. 圖片分析,如何通過(guò)圖片判斷這個(gè)攝像頭的狀態(tài)是否正常。在這里,筆者選用了提取圖片的亮度值作為參考值,具體的原因如下:

  • 如果鏡頭發(fā)生了位移,對(duì)應(yīng)的亮度值會(huì)發(fā)生變化,已經(jīng)測(cè)試過(guò)。
  • 如果過(guò)量或者過(guò)暗,亮度值也會(huì)發(fā)生變化,也測(cè)試過(guò)。
  • 如果攝像頭掉線了,直接無(wú)法獲取數(shù)據(jù),這個(gè)直接就可以判斷出來(lái)。

當(dāng)然,選取亮度值作為參考也有局限性,會(huì)受到天氣的影響,當(dāng)然,我們可以將參考閾值設(shè)置的寬泛一點(diǎn)(參考值與實(shí)際值之間的差距),建議參考閾值不超過(guò)10,如果超過(guò)10,如果畫(huà)面是正常的,可以修改參考值。當(dāng)然,更智能一點(diǎn),可以動(dòng)態(tài)設(shè)置參考值,以前30天的平均實(shí)際值作為參考,這樣會(huì)更精確一點(diǎn)。

??? def get_pic_value(img_name):

??? im=Image.open(img_name).convert('L')

??? start=ImageStat.Stat(im)

return str(int(start.mean[0]))

整體方案設(shè)計(jì)如下:

目前這個(gè)方案已經(jīng)部署在筆者公司,基本上一些大的問(wèn)題都可以通過(guò)這個(gè)機(jī)制發(fā)現(xiàn),期待基于這些數(shù)據(jù)圖片上進(jìn)一步拓展,發(fā)現(xiàn)更多有益于業(yè)務(wù)需求的機(jī)會(huì)。

?

總結(jié)

以上是生活随笔為你收集整理的Python实现摄像头状态巡检的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。