使用Opencv/c++在Stream中的两点之间绘制aline

draw aline between two points in Stream using Opencv /c++

本文关键字:两点 之间 aline 绘制 Opencv c++ Stream 使用      更新时间:2023-10-16

我快疯了。。。我想在上一帧的(center.x和center.y)和当前帧的(center.x和centre.y)之间画一条线。。。

for(int j=0; j<Frames; j++){ 
       for( size_t i = 0; i < circles.size(); i++ ){
          Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
          cout << "center" << center.x << ", " << center.y << endl;
          Vector.push_back(std::make_pair(center.x,center.y));               
          int radius = cvRound(circles[i][2]);
          circle( dis, center, 3,  1 , -1, 8, 0 );            
          circle( dis, center, radius,  1  , 3, 8, 0 );  
          cv::Point2i p1(center.x, center.y);
          }    
    }
  cv::Mat base(100, 100, CV_32F);
      cv::Point2i p2(center.x, center.y);  //for the previous frame
      cv::line(base, p1, p2, cv::Scalar(1.0), 1, CV_AA);   // CV_AA == Anti-aliased flag

当代码第一次运行时,p1将为当前帧生成!但我不知道如何将其保存在缓冲区中以保持它,然后当代码第二次运行时,在这两点之间画一条线。

提前谢谢。。

如果您声明一个cv::Point global:

cv::Point prevCenter;

并将其设置在您的循环中

prevCenter.x = center.x;
prevCenter.y = center.y;

如果你在j的循环中添加cv::line语句(现在,它在循环之外),你应该能够用它来画线

if (j > 0)
{
    cv::line(base, center, prevCenter, cv::Scalar(1.0), 1, CV_AA); 
}