C++ C++;点坐标

C++ C++;点坐标,c++,coordinates,tracker,C++,Coordinates,Tracker,我做了一个简单的跟踪器。现在我需要得到相同点的坐标。我需要打印相同的坐标,比如(x,y),而不是点的编号 我该怎么做呢。 我正在使用Linux 请稍微具体一点,因为我在学习C++,我不是专家。 for(i = 0; i < n; i++){ if(visi.at<int>(i,0) == 0) continue; p1 = cv::Point(shape.at<double>(i,0),shape.at<double&

我做了一个简单的跟踪器。现在我需要得到相同点的坐标。我需要打印相同的坐标,比如(x,y),而不是点的编号

我该怎么做呢。 我正在使用Linux

请稍微具体一点,因为我在学习C++,我不是专家。
for(i = 0; i < n; i++){    
    if(visi.at<int>(i,0) == 0) 
        continue;
    p1 = cv::Point(shape.at<double>(i,0),shape.at<double>(i+n,0));

    c1 = CV_RGB(255,255,0); 
    c2 = CV_RGB(255,0,0);
    c3 = CV_RGB(0,0,0);
    c4 = CV_RGB(255,255,255);

    cv::circle(image,p1,1,c3);
    cv::circle(image,p1,2,c1); 
    cv::circle(image,p1,3,c2);  

    sprintf(sss,"%d",i); text = sss;
    cv::putText(image,text,p1,CV_FONT_HERSHEY_SIMPLEX,0.3,c4);    
}
(i=0;i 如果(在(i,0)==0处访问) 继续; p1=cv::点(形状在(i,0),形状在(i+n,0)); c1=CV_RGB(255255,0); c2=CV_RGB(255,0,0); c3=CV_RGB(0,0,0); c4=CV_RGB(255255); cv::圆(图,p1,1,c3); cv::圆(图,p1,2,c1); cv::圆(图,p1,3,c2); sprintf(sss,“%d”,i);text=sss; cv::putText(图像、文本、p1、cv\u字体、HERSHEY\u单纯形、0.3、c4); }
我不知道图书馆,只是在谷歌上搜索了
cv::Point
,但我猜:

sprintf(sss, "(%d,%d)", p1.x, p1.y);


编辑:正如评论员佐斯卡正确指出的那样,您还必须确保为
sss
字符串缓冲区分配了足够的空间来保存整个格式化值

请添加一些关于您正在使用的库的确切信息。我只是猜测它是OpenCV。我不确定为什么选择sprintf而不是stringstream,但是当更改放入sss字符串中的格式时,您必须考虑是否有足够的内存来放入两个整数而不是一个。谢谢所有的答案。这是我在一些教程中发现的唯一一种在我创建的点附近打印文本的方法。无论如何,如果你有任何更好的选择,这将是非常好的。我真的想用同一点的坐标x,y来代替点的数目。嗯,如果sss中没有足够的内存来存储两个整数呢?