Re: [問題] 用opencv寫視訊監控系統

看板C_and_CPP (C/C++)作者 (pei)時間16年前 (2009/09/01 20:03), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《gmuooo (Miraculous)》之銘言: : ※ 引述《EterneLilac (Eterne)》之銘言: : : 我想用opencv去寫一個視訊監視器的的東西, : : 當輸入發生異常的時候他可以儲存當下圖片, : : 我目前構想是用opencv網站上的"讀視頻文件和運動物體檢測"來製作, : : 讓他比較前後兩張圖片的差異, : : //當前幀跟背景圖相減 : : cvAbsDiff(pFrameMat, pBkMat, pFrMat); : : if(pFrameMat != pFrMat) : : { : : printf(" unusual \n"); : : } : : 但是怎麼跑前後他兩張圖都會有差異,一直顯示unusual, : : 請問我該怎麼修改呢? : : 還是我要做的東西有其他方式可以完成? : 提供一個方向給您。 : 根據opencv網站,基本上應該可以達到你的需求,只是在一些步驟上,可能沒有搞清楚。 : 所謂運動物體檢測,簡單說就是在穩定的影像上(Camera固定角度),可以利用建立背景 : 模型方式進行,一般最常用的是GMM。利用建立好得背景與當前影像做相減。這時候取得 : 之影像為前景影像。之後在針對這前景影像做分析判斷。 : 你的問題在於你的pFrameMat應該是你當前影像pBkMat為背景影像,那pFrMat肯定就是 : 前景影像,那不管怎樣比你的當前影像一定不等於你的前景影像,故才會一直出現 : "unusual"。 其實最主要的原因在於 cvAbsDiff()函數運算後, 因為取影的自然雜訊便會讓前後影像間有差異存在, 所以比較適合的判斷點應該是以二值化後的影像, 針對前後兩張圖之間相減後的Blob大小, 進行臨界值的判斷,以決定是否有異物出現, 建議將每次相減後的二值影像畫出,你自然就會知道原因了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 116.89.141.235
文章代碼(AID): #1AdGs0Aw (C_and_CPP)
文章代碼(AID): #1AdGs0Aw (C_and_CPP)