欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Opencv光流運動物體追蹤詳解

 更新時間:2018年01月09日 13:40:14   作者:-牧野-  
這篇文章主要為大家詳細(xì)介紹了Opencv光流運動物體追蹤的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

光流的概念是由一個叫Gibson的哥們在1950年提出來的。它描述是空間運動物體在觀察成像平面上的像素運動的瞬時速度,利用圖像序列中像素在時間域上的變化以及相鄰幀之間的相關(guān)性來找到上一幀跟當(dāng)前幀之間存在的對應(yīng)關(guān)系,從而計算出相鄰幀之間物體的運動信息的一種方法。那么所說的光流到底是什么?

簡單來說,上圖表現(xiàn)的就是光流,光流描述的是圖像上每個像素點的灰度的位置(速度)變化情況,光流的研究是利用圖像序列中的像素強度數(shù)據(jù)的時域變化和相關(guān)性來確定各自像素位置的“運動”。研究光流場的目的就是為了從圖片序列中近似得到不能直接得到的運動場。

光流法的前提假設(shè):

(1)相鄰幀之間的亮度恒定;
(2)相鄰視頻幀的取幀時間連續(xù),或者,相鄰幀之間物體的運動比較“微小”;
(3)保持空間一致性;即,同一子圖像的像素點具有相同的運動;

Opencv中金字塔LK光流實現(xiàn):

#include "highgui/highgui.hpp"  
#include "opencv2/nonfree/nonfree.hpp" 
#include "opencv2/video/tracking.hpp" 
#include <iostream> 
 
using namespace cv; 
using namespace std; 
 
Mat image1,image2; 
vector<Point2f> point1,point2,pointCopy; 
vector<uchar> status; 
vector<float> err; 
 
int main(int argc,char *argv[])  
{  
 VideoCapture video(argv[1]); 
 double fps=video.get(CV_CAP_PROP_FPS); //獲取視頻幀率 
 double pauseTime=1000/fps; //兩幅畫面中間間隔  
 video>>image1; 
 Mat image1Gray,image2Gray; 
 cvtColor(image1,image1Gray,CV_RGB2GRAY); 
 goodFeaturesToTrack(image1Gray,point1,100,0.01,10,Mat()); 
 pointCopy=point1; 
 for(int i=0;i<point1.size();i++) //繪制特征點位 
 {   
  circle(image1,point1[i],1,Scalar(0,0,255),2);   
 }  
 namedWindow("角點特征光流",0); 
 imshow("角點特征光流",image1); 
 while(true) 
 { 
  video>>image2; 
  if(!image2.data||waitKey(pauseTime)==27) //圖像為空或Esc鍵按下退出播放 
  { 
   break; 
  } 
  cvtColor(image2,image2Gray,CV_RGB2GRAY); 
  calcOpticalFlowPyrLK(image1Gray,image2Gray,point1,point2,status,err,Size(20,20),3); //LK金字塔  
  for(int i=0;i<point2.size();i++) 
  { 
   circle(image2,point2[i],1,Scalar(0,0,255),2); 
   line(image2,pointCopy[i],point2[i],Scalar(255,0,0),2); 
  }   
  imshow("角點特征光流",image2); 
  swap(point1,point2); 
  image1Gray=image2Gray.clone(); 
 }  
 return 0;  
} 

圖像跟蹤結(jié)果1:

圖像跟蹤結(jié)果2:

視頻流跟蹤:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Turbo C(V2.0)編譯錯誤信息的詳細(xì)介紹

    基于Turbo C(V2.0)編譯錯誤信息的詳細(xì)介紹

    本篇文章對Turbo C(V2.0)編譯的錯誤信息進(jìn)行了詳細(xì)的介紹。需要的朋友參考下
    2013-05-05
  • vc6.0中c語言控制臺程序中的定時技術(shù)(定時器)

    vc6.0中c語言控制臺程序中的定時技術(shù)(定時器)

    這篇文章主要介紹了vc6.0中c語言控制臺程序中的定時技術(shù)(定時器),需要的朋友可以參考下
    2014-04-04
  • C語言正則表達(dá)式操作示例

    C語言正則表達(dá)式操作示例

    這篇文章主要介紹了C語言正則表達(dá)式操作,結(jié)合實例形式分析了C語言正則匹配類似郵箱格式功能的實現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • 用代碼和UML圖化解設(shè)計模式之橋接模式的深入分析

    用代碼和UML圖化解設(shè)計模式之橋接模式的深入分析

    本篇文章是對橋接模式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++ WideCharToMultiByte()函數(shù)案例詳解

    C++ WideCharToMultiByte()函數(shù)案例詳解

    這篇文章主要介紹了C++ WideCharToMultiByte()函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C++設(shè)計與實現(xiàn)ORM系統(tǒng)實例詳解

    C++設(shè)計與實現(xiàn)ORM系統(tǒng)實例詳解

    這篇文章主要為大家介紹了C++設(shè)計與實現(xiàn)ORM系統(tǒng)實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • VSCode插件開發(fā)全攻略之package.json詳解

    VSCode插件開發(fā)全攻略之package.json詳解

    這篇文章主要介紹了VSCode插件開發(fā)全攻略之package.json的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • C語言實現(xiàn)簡易通訊錄

    C語言實現(xiàn)簡易通訊錄

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)簡易通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C++德州撲克的核心規(guī)則算法

    C++德州撲克的核心規(guī)則算法

    德州撲克想必很多人都玩過,當(dāng)然對于新手需要說明的是,德州指的是德克薩斯州,而不是山東德州。分享下在計算最大牌型,比牌邏輯的算法和洗牌的方法,希望對大家有幫助。
    2016-04-04
  • 深入分析C++中聲明與定義的區(qū)別

    深入分析C++中聲明與定義的區(qū)別

    C++學(xué)了這么多年你知道為什么定義類時,類的定義放在.h文件中,而類的實現(xiàn)放在cpp文件中。它們?yōu)槭裁茨軌蜿P(guān)聯(lián)到一起呢?你知道什么東西可以放在.h文件中,什么不能。什么東西又可以放在cpp文件中。如果你忘記了或是壓根就不明白,那么讀過此文你會清晰無比??!
    2014-09-09

最新評論