您好,登錄后才能下訂單哦!
這篇文章主要介紹了C++ OpenCV視頻操作之如何實現稠密光流對象跟蹤,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
前言
稠密光流算法(即圖像上所有像素點的光流都計算出來),由于要計算圖像上所有點的光流,故計算耗時,速度慢。一般來說我們在平時應用上可能會用到的比較少,在這里我們就簡單講解一下。
函數API
void cv::calcOpticalFlowFarneback( InputArray _prev0, InputArray _next0, OutputArray _flow0, double pyr_scale, int levels, int winsize, int iterations, int poly_n, double poly_sigma, int flags )
參數說明如下:
InputArray :輸入前一幀圖像
InputArray :輸入后一幀圖像
OutputArray :輸出的光流
double:金字塔上下兩層之間的尺度關系
int :金字塔層數
int:均值窗口大小,越大越能denoise并且能夠檢測快速移動目標,但會引起模糊運動區域
int:迭代次數
int:像素領域大小,一般為5,7等
double:高斯標注差,一般為1-1.5
int:計算方法。主要包括OPTFLOW_USE_INITIAL_FLOW和OPTFLOW_FARNEBACK_GAUSSIAN
代碼實現
我們再新建一個項目名為opencv--video4,按照配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法
先在外層讀取第一幀圖像
讀取圖像并時行稠密光流計算,下圖紅框內就是用到了我們的API,明顯可以看出來這里比稀疏光流要簡單些,因為不用再先獲取特征點進行對比了,下面的藍色框就是我們繪制結果的函數
代碼結尾
繪制結果的函數
這樣整個就完成了,文章開頭的視頻就是我們運行起來的效果,下面是視頻中的截圖
感謝你能夠認真閱讀完這篇文章,希望小編分享的“C++ OpenCV視頻操作之如何實現稠密光流對象跟蹤”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。