python+攝影機:極簡實現畫面變化監測
- 2019 年 10 月 6 日
- 筆記
一番碼客 : 挖掘你關心的亮點。 http://efonfighting.imwork.net
現在很多網路攝影機都有防盜報警了,簡單講就是家裡本來沒有人,但攝影機卻發現家裡有動靜,好,發個消息給主人,趕緊打開攝影機app,看下家裡是什麼在動。當我們想通過攝影機做一個工具,代替人眼的重複勞動,觀察一個畫面什麼時候動了的時候,並且最好動的時候把動的畫面抓下來,這時一番想到了操作極簡的python。下面我們就來用python和攝影機做一個可以實現監控畫面變化的小程式。
需求分析
這個小程式要做到如下功能:
- 當攝影機拍攝的畫面變化時,拍攝變化前後的兩張圖,以供分析變化前後的狀態。
- 極快(肉眼可見的一閃而過,10ms級別)的變化也能捕捉到。
功能實現
基本思路
- 打開攝影機,不斷讀取攝影機圖片,對比相鄰兩張圖片對應像素點的RGB顏色數據任意一個顏色的差異;
- 像素點顏色數據差異大於某一閾值(需要考慮噪點波動),認為是一個有效的變化像素點;
- 當變化像素點數量大於整幅畫面的一定比例(比例大小的設定,可以用來設定檢測畫面變化的靈敏度)時,認為前後兩張畫面有變化,保存這兩張圖片。
- 為了檢測極快的畫面變化,需要加快讀圖、處理數據的速度,因此考慮隔幾點取一個點來運算,減少運算量,加快圖片處理速度。
程式碼實現
一番看了下,整個功能的實現58行,還包含一些格式的空行,可謂極簡。python真香。
當然,語法調試,參數調試,還是要花點時間的。
程式碼如下(公眾號後台發送 "攝影機" 獲取源碼文本)。
免費知識星球: 一番碼客-積累交流 微信公眾號:一番碼客 微信:Efon-fighting 網站:http://efonfighting.imwork.net