aihot  2017-04-27 21:18:46  OpenCV |   查看评论   
// http://vision.middlebury.edu/flow/data/  
  • void makecolorwheel(vector<Scalar> &colorwheel)  
  • {  
  •     int RY = 15;  
  •     int YG = 6;  
  •     int GC = 4;  
  •     int CB = 11;  
  •     int BM = 13;  
  •     int MR = 6;  
  •   
  •     int i;  
  •   
  •     for (i = 0; i < RY; i++) colorwheel.push_back(Scalar(255,       255*i/RY,     0));  
  •     for (i = 0; i < YG; i++) colorwheel.push_back(Scalar(255-255*i/YG, 255,       0));  
  •     for (i = 0; i < GC; i++) colorwheel.push_back(Scalar(0,         255,      255*i/GC));  
  •     for (i = 0; i < CB; i++) colorwheel.push_back(Scalar(0,         255-255*i/CB, 255));  
  •     for (i = 0; i < BM; i++) colorwheel.push_back(Scalar(255*i/BM,      0,        255));  
  •     for (i = 0; i < MR; i++) colorwheel.push_back(Scalar(255,       0,        255-255*i/MR));  
  • }  
  •   
  • void motionToColor(Mat flow, Mat &color)  
  • {  
  •     if (color.empty())  
  •         color.create(flow.rows, flow.cols, CV_8UC3);  
  •   
  •     static vector<Scalar> colorwheel; //Scalar r,g,b  
  •     if (colorwheel.empty())  
  •         makecolorwheel(colorwheel);  
  •   
  •     // 确定运动范围:
  •     float maxrad = -1;  
  •   
  •     // 找到最大流量来规范化fx和fy
  •     for (int i= 0; i < flow.rows; ++i)   
  •     {  
  •         for (int j = 0; j < flow.cols; ++j)   
  •         {  
  •             Vec2f flow_at_point = flow.at<Vec2f>(i, j);  
  •             float fx = flow_at_point[0];  
  •  

    除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自流Optical Flow介绍与OpenCV实现

    留言与评论(共有 0 条评论)
       
    验证码:
    [lianlun]1[/lianlun]