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算法

  • 相关阅读:
    图片 音频 视频上传
    asp.net导出execl和图片
    asp.net网页播放MP4 出错
    js 定时器
    js的Math和正则
    js字符串,Arry数组,join连接,push,shift,sort
    js的argument参数
    js函数对象
    js简单语法,循环
    position的relative
  • 原文地址:https://www.cnblogs.com/shang-slam/p/6591901.html
Copyright © 2011-2022 走看看