【问题标题】:How to draw a line between two points in opencv c++如何在opencv c ++中的两点之间画一条线
【发布时间】:2014-03-01 16:15:23
【问题描述】:
  Point p1(faces[i].x + (eyes[j].x +  eyes[j].width*0.5), faces[i].y + (eyes[j].y + eyes[j].height*0.5));
  Point p2(faces[i].x + (eyes[j].x +  eyes[j].width*0.5), faces[i].y + (eyes[j].y + eyes[j].height*0.5));
  line(frame, p1, p2, Scalar( 255, 255, 0 ), 5, 8, 0);

这是我编写的用于在 p1 和 p2 两点之间绘制线段的代码。实际上我得到了点的显示,但没有线段。谁能帮帮我!!

提前致谢。

【问题讨论】:

  • 只是猜测......如果这些点位于同一个位置,那么你有一个点而不是一条线。
  • p1 和 p2 似乎相同?
  • 实际上我需要在两个眼睛中心之间画线。 Tats y 我拿了两个中心。我确实从脸上检测到了眼睛。
  • 我使用 haarcascade_eye_tree_eyeglasses 来检测眼睛。检测眼睛后,得到眼睛的中心。现在需要用线加入这些中心。

标签: c++ visual-studio-2010 opencv line point


【解决方案1】:

通过上面提供的代码,可以推断出这两个点位于同一个地方,因此您得到的不是任何线而是一个点。

也看一下线函数:http://docs.opencv.org/modules/core/doc/drawing_functions.html#line

顺便说一句:您的索引有问题。如果你想连接两只眼睛的中心,你应该做类似的事情

Point p1(faces[0].x + (eyes[0].x +  eyes[0].width*0.5), faces[0].y + (eyes[0].y + eyes[0].height*0.5));
Point p2(faces[0].x + (eyes[1].x +  eyes[1].width*0.5), faces[0].y + (eyes[1].y + eyes[1].height*0.5));

假设 faces[0] 指向方脸的坐标,eyes[0] 是该脸上的第一只眼睛,eyes1 是第二只眼睛(并假设以下情况不会发生)

【讨论】:

  • 我需要得到两个眼睛中心的中心点。你能建议我解决方案吗!
  • 我在循环运行它,图像也在视频中波动。我怎么会这样。
  • 你需要弄清楚那些索引“i”和“j”是什么以及如何使用它们。可用的信息有限,我无法提供更多帮助。
猜你喜欢
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
  • 1970-01-01
  • 2018-08-27
相关资源
最近更新 更多