2013-03-27 84 views
2

我想绘制一条线来连接一个边界框的中心点,这些点存储在一个向量中,因为中心在一帧之间移动。OpenCV从一组点中绘制一条线

现在我正在尝试使用CvLine将这些点连接在一起。我正在关注。但CvLine函数满足了我给它的参数。

下面是代码:

vector<Point> Rightarm(20); 


vector<Point> Leftarm(20); 

    vector<Point>::const_iterator RightIter; 
    vector<Point>::const_iterator LeftIter; 



    Point center = Point(oko[0].x + (oko[0].width/2), oko[0].y + (oko[0].height/2)); 
    cout<<"Center Point of Box: 0 is: " <<center<<endl; 

    double area = (oko[0].width * oko[0].height); 
    cout<<"The Area of Box: 0 is: " <<area<<endl; 

    Point center1 = Point(oko[1].x + (oko[1].width/2), oko[1].y + (oko[1].height/2)); 
    cout<<"Center Point of Box: 1 is: " <<center1<<endl; 

    double area1 = (oko[1].width * oko[1].height); 
    cout<<"The Area of Box: 1 is: " <<area1<<endl; 



Rightarm.push_back(center); 
    Leftarm.push_back(center1); 

    if(oko[0].x > oko[1].x) 
    { 

    } 
     else 
     { 

     } 


    for(RightIter = Rightarm.begin(); RightIter != Rightarm.end(); ++RightIter) 
    { 
     circle(drawing, *RightIter, 3, Scalar(0,0,255), CV_FILLED); 
    } 

    if(Rightarm.size() == 20) 
     { 
      Rightarm.clear(); 

     } 

    for(LeftIter = Leftarm.begin(); LeftIter != Leftarm.end(); ++LeftIter) 
    { 
     circle(drawing, *LeftIter, 3, Scalar(0,255,0), CV_FILLED); 
    } 

     if(Rightarm.size() == 20) 
     { 
      Leftarm.clear(); 

     } 

    cvLine(drawing, center.x, center.y, Scalar(255,255,255),1 ,8 ,CV_AA); 

    imshow(window_Input, frame); 
    imshow(window_Output, drawing); 

任何人都可以看到我这个去错了...?

回答

0

cvLine绘制两点之间的线,你应该给它在两次CV ::点,但不center.x河畔center.y

2

你给错了论据和一个额外的参数排队功能可按。您指出的文档是针对Python界面的,也是使用cv的较旧的文档。假设你有最新版本的OpenCV,最好在Python中使用新的C++接口或cv2接口。

你必须使用线之类的函数

cvLine(
img,  // image to draw on 
center, // starting end point of line segment of type cv::Point 
center1, // other end of line segment 
Scalar(0, 255, 0), //green colour 
1   // thickness of line 
CV_AA  // anti aliased line type 
); 

文档here

2

也许是这样的:

struct centerpoint { 
    int x; 
    int y; 
} center1,center2; 

(...) //Define values for centers. 

cvLine(drawing, 
     cvPoint(center1.x, center1.y), 
     cvPoint(center2.x, center2.y), 
     Scalar(255,255,255), 1, 8 , CV_AA); 

不要忘记投票所有你喜欢的答案,并接受一个工程。