【问题标题】:C++ point coordinatesC++ 点坐标
【发布时间】:2016-05-09 17:00:55
【问题描述】:

我做了一个简单的跟踪器。所以现在我需要获取相同点的坐标。我需要打印相同的坐标,例如 (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);    
}

【问题讨论】:

  • 请添加一些关于您正在使用的库的信息。我只是猜到是 OpenCV。
  • 我不确定为什么选择 sprintf 而不是 stringstream,但是当更改 sss 字符串中的格式时,您必须考虑是否有足够的内存来放置两个整数而不是一个在那里。
  • 感谢所有回答。这是我在一些教程中找到的唯一替代方法,可以在我创建的点附近打印我的文本。无论如何,如果您对此有任何更好的选择,那将非常好。我真的很想用同一点的坐标x,y代替点的编号。

标签: c++ coordinates tracker


【解决方案1】:

我不知道图书馆,只是用谷歌搜索了cv::Point,但我猜:

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

http://docs.opencv.org/3.1.0/db/d4e/classcv_1_1Point__.html#pub-attribs

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

【讨论】:

  • 嗯,如果sss中没有足够的内存容纳两个整数怎么办?
猜你喜欢
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
  • 2019-08-08
  • 2014-03-20
  • 1970-01-01
  • 2021-08-30
  • 1970-01-01
  • 2020-09-09
相关资源
最近更新 更多