您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“C++ OpenCV視頻操作之如何實現KLT稀疏光流對象跟蹤”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“C++ OpenCV視頻操作之如何實現KLT稀疏光流對象跟蹤”這篇文章吧。
前言
光流跟蹤法是目前分析運動圖像比較重要的方法,用來指時變圖像的運動速度,是根據運動的物體,對應到圖像中亮度模式也在運動得到的。稀疏光流跟蹤是一種經典的對象跟蹤算法,可以繪制運動對象的跟蹤軌跡與運行方向,是一種簡單、實時高效的跟蹤算法,這個算法最早是有Bruce D. Lucas and Takeo Kanade兩位作者提出來的,所以又被稱為KLT。KLT算法工作有三個假設前提條件:
亮度恒定
短距離移動
空間一致性
基本流程
讀取圖像
角點提取
光流計算
跟蹤流程
輸出跟蹤圖像
這一篇我們先看一下基本流程的前兩步讀取圖像和角點提取。
代碼演示
我們再新建一個項目名為opencv--video3,按照配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法
里面加載的圖像還是上次我們用到的test6.mp4,就是那個我拿一個按摩器在視頻中移動那個視頻。
定義參數
首先我們定義了兩個Mat和一個特征點提取的vector
將源圖轉換為灰度圖
角點提取
我們在特征提取的時候當時學過Shi-Tomasi角點檢測,用到的角點檢測的API就是goodFeaturesToTrack,里面的具體參數可以看一下當時的文章《C++ OpenCV特征提取之亞像素級角點檢測》里面的定義及說明。這里用到后把上面的灰度圖像中的特征提取出來放到了我們定義的std::vector<cv::Point2f> features里面。
在源圖上畫出特征點
我們把提取出來的特征點通過遍歷后以紅色的圓點形式畫到了源圖上,然后再顯示出來。
整個部分的代碼
我們看一下運行出來的視頻效果
視頻中的截圖
以上是“C++ OpenCV視頻操作之如何實現KLT稀疏光流對象跟蹤”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。