zoukankan      html  css  js  c++  java
  • OpenCV 3.2 Tracking 物体跟踪

    跟踪就是在连续视频帧中定位物体,通常的跟踪算法包括以下几类:

    1. Dense Optical Flow 稠密光流

    2. Sparse Optical Flow 稀疏光流 最典型的如KLT算法(Kanade-Lucas-Tomshi)

    3. Kalman Filter

    4. Meanshift and Camshift

    5. Multiple object tracking

    需要注意跟踪和识别的区别,通常来说跟踪可以比识别快很多,且跟踪失败了可以找回来。

    OpenCV 3以后实现了很多追踪算法,都实现在contrib模块中,安装参考

    下面code实现了跟踪笔记本摄像头画面中的固定区域物体,可以选用OpenCV实现的算法

    #include <opencv2/opencv.hpp>
    #include <opencv2/tracking.hpp>
    
    using namespace std;
    using namespace cv;
    
    int main(int argc, char** argv){
      // can change to BOOSTING, MIL, KCF (OpenCV 3.1), TLD, MEDIANFLOW, or GOTURN (OpenCV 3.2)
      Ptr<Tracker> tracker = Tracker::create("MEDIANFLOW"); 
      VideoCapture video(0);
      if(!video.isOpened()){
        cerr << "cannot read video!" << endl;
        return -1;
      }
      Mat frame;
      video.read(frame);
      Rect2d box(270, 120, 180, 260);
      tracker->init(frame, box);
      while(video.read(frame)){
        tracker->update(frame, box);
        rectangle(frame, box, Scalar(255, 0, 0), 2, 1);
        imshow("Tracking", frame);
        int k=waitKey(1);
        if(k==27) break;
      }
    }

     着重了解效果较好的KCF(Kernelized Correlation Filters)和经典的KLT算法

  • 相关阅读:
    [AHOI2005]航线规划(树链剖分+时间倒流)
    洛谷4317花神的数论题(数位DP)
    天天爱跑步(NOIP2016)
    BZOJ4730 Alice和Bob又在玩游戏
    基础数论总结
    poj1845(数论)
    扩展(bsgs+卢卡斯)(bzoj3283)
    古代猪文(数论)
    BSGS
    构建之法阅读笔记3
  • 原文地址:https://www.cnblogs.com/shang-slam/p/6591901.html
Copyright © 2011-2022 走看看