介紹
光流是由物體或照相機的運動引起的兩個連續幀之間圖像物體視在運動的模式。它是2D向量場,其中每個向量都是位移向量,顯示點從第一幀到第二幀的運動。
光流在以下領域有許多應用:
- 運動結構
- 視頻壓縮
- 視頻穩定
光流的工作基于以下幾個假設:
- 物體的像素強度在連續的幀之間不改變。
- 相鄰像素具有相似的運動。
實現
在OpenCV中實現光流的步驟
1 查找一些關鍵點
在例子中我們用goodFeaturesToTrack函數來查找關鍵點。函數原型:
void cv::goodFeaturesToTrack( InputArray _image, OutputArray _corners,
int maxCorners, double qualityLevel, double minDistance,
InputArray _mask, int blockSize,
bool useHarrisDetector, double harrisK )
2 迭代跟蹤這些點
例子中用calcOpticalFlowPyrLK來計算光流。函數原型:
void cv::calcOpticalFlowPyrLK( InputArray _prevImg, InputArray _nextImg,
InputArray _prevPts, InputOutputArray _nextPts,
OutputArray _status, OutputArray _err,
Size winSize, int maxLevel,
TermCriteria criteria,
int flags, double minEigThreshold )
根據我的理解,在當前幀查找一些關鍵點,然后根據這些關鍵點,在下一幀進行匹配,得到這些點在下一幀的位置。這樣就得到了了一組向量,表示了當前幀和下一幀之前點的移動,也就實現了對一些物體的跟蹤。
官方例子
#include
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
int main(int argc, char **argv)
{
const string about =
"This sample demonstrates Lucas-Kanade Optical Flow calculation.\\n"
"The example file can be downloaded from:\\n"
" https://www.bogotobogo.com/python/OpenCV_Python/images/mean_shift_tracking/slow_traffic_small.mp4";
const string keys =
"{ h help | | print this help message }"
"{ @image | vtest.avi | path to image file }";
CommandLineParser parser(argc, argv, keys);
parser.about(about);
if (parser.has("help"))
{
parser.printMessage();
return 0;
}
string filename = samples::findFile(parser.get
運行結果截圖
審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
OpenCV
+關注
關注
30文章
628瀏覽量
41274 -
python
+關注
關注
56文章
4783瀏覽量
84473 -
printf函數
+關注
關注
0文章
31瀏覽量
5880
發布評論請先 登錄
相關推薦
ELF 1技術貼|如何在Ubuntu中編譯OpenCV庫
在之前發布的文章中探討了交叉編譯OpenCV并部署至嵌入式系統的方法。然而,在調試階段,我們發現在Ubuntu環境下將OpenCV編譯為X86架構可能更加方便和高效。通過在主機上編譯并使用X86架構
【教程】通俗講法告訴你什么是光流Optical Flow,附算法
學者重視。 還是回歸應用吧,目前OpenCV中實現了不少的光流算法。1. calcOpticalFlowPyrLK通過金字塔Lucas-Ka
發表于 06-02 17:18
OpenCV中的BGR格式,在libyuv中對應的那個格式?OpenCV中的RGB格式呢?
OpenCV中的BGR格式,在libyuv中對應的那個格式?OpenCV中的RGB格式呢?
發表于 09-19 06:00
在Vivado中如何實現OpenCV設計
觀看視頻,了解OpenCV庫和其在一些典型應用中的使用,以及Zynq-7000 SoC的優點和如何實現OpenCV設計。同時您還能學習到如何在
OpenCV庫的特點和主要功能及實現光流方法的運動說明
序列圖像的光流計算是計算機視覺研究領域運動估計的重要組成部分。本文介紹了OpenCV庫的特點和主要功能,通過調用函數庫中的金字塔Lucas—Kanade
發表于 10-15 11:56
?12次下載
OpenCV庫的特點和功能與如何快速實現光流場的方法說明
序列圖像的光流計算是計算機視覺研究領域運動估計的重要組成部分。本文介紹了0PenCV庫的特點和主要功能,通過調用函數庫中的金字塔Lucas-Kanade光
發表于 10-31 11:53
?3次下載
奧比中光與OpenCV成為戰略合作伙伴
近日,奧比中光與OpenCV(OpenSource Computer Vision Library)簽署《戰略合作協議》,雙方正式成為戰略合作伙伴。OpenCV5.0規劃納入3D視覺技
OpenCV Webinar 2丨如何在OpenCV中調用Tengine推理,實現開發效率翻倍
這個月,OPEN AI LAB的合作伙伴OpenCV 20歲了!值此之際,OpenCV中國團隊推出系列OpenCV Webinar,在全球范圍內定期邀請OpenCV專家來作...
發表于 01-26 19:48
?3次下載
如何在OpenCV中實現CUDA加速
OpenCV4.x中關于CUDA加速的內容主要有兩個部分,第一部分是之前OpenCV支持的圖像處理與對象檢測傳統算法的CUDA加速;第二部分是OpenCV4.2版本之后開始支持的針對深
評論