1. 程式人生 > >幀間差分演算法

幀間差分演算法

第一步:從攝像頭採集視訊成一幀一幀的影象

函式vecdiocapture capture(0/1);if(!capture.isopen());開啟攝像頭如果失敗就輸出“OPEN CAMERA FAIL”

第二步:把當前幀的影象灰度化cvtColor();然後取當前幀的影象與上一幀的影象做差subtract();並且絕對值abs();然後把取完絕對值的圖片位深從16變為8  convertTo()最後還要進行閾值化threshold();大於閾值的就賦予該點255否則賦予0 .。

第三步:通過迭代器方法遍歷閾值化後的影象的每一個畫素點:

cv::Mat_<uchar>::iterator it = resule_grayimg.begin<uchar>();    cv::Mat_<uchar>::iterator itend = resule_grayimg.end<uchar>();    for (; it != itend; ++it)    {     if ((*it)>0) counter += 1;//二值化後,畫素點是0或者255    }//如果畫素點不為零就累計counter加一。

第四步:通過判斷counter畫素點的個數判斷攝像頭拍攝的物體是否由移動,當有移動時相鄰兩幀影象的差值的絕對值就會大於零,改變數越大差值的絕對值越大。