【问题标题】:How to get the vertices of a rect() in Processing?如何在处理中获取 rect() 的顶点?
【发布时间】:2017-05-14 23:04:43
【问题描述】:

使用 Greg Borenstein 的 OpenCV for Processing 库,我能够在网络摄像头流中检测用户的面部,并在其周围绘制一个矩形。这是将矩形绘制到屏幕上的部分:

Rectangle[] faces = opencv.detect()

for (int i = 0; i < faces.length; i++) 
{
   rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height);
}

当用户移动他们的脸时,矩形也会随之移动。

我想在屏幕上画一条线,其中一个点设置在预定义位置,而另一个点始终固定在矩形的右下手顶点。这样,线条的长度和角度会随着矩形的位置而变化。

我尝试的一件事是从faces[i].xfaces[i].y 中减去一些值,直到我到达右下角的顶点,但我发现网络摄像头中面部的深度使这种方法不起作用。

这样,我怎样才能找到上面提到的矩形的顶点,以便我可以正确地画线?

【问题讨论】:

  • 我不太明白你的问题。你是绘制矩形的人,所以你已经有了它的位置。你能发一个minimal reproducible example吗? (注意:这应该是你的整个项目,而只是一个显示问题的小例子)
  • @Kevin Workman 首先,矩形正在平移到屏幕上随机选择的点,因此我无法知道它会在哪里结束。其次,我没有提供任何代码,因为我认为没有必要解决问题。我只是在寻找某种方法来找到矩形的右下角。
  • 对不起,我还是不明白。你是提出随机点的人,不是吗?再次,请发布一个 minimal reproducible example 来证明问题。
  • @Kevin Workman 我改写了这个问题,提供了一些示例代码,并将所有内容保持在最低限度。
  • @DontKnowMuchButGettingBetter 我编辑了这个问题。它已被改写,并提供了一些示例代码。谢谢你的建议。

标签: java processing


【解决方案1】:

矩形的x 位置给出了它的左侧。所以x+width 给了你它的右边。

同样,矩形的y 位置为您提供了它的顶部。所以y+height 给了你它的底部。

float rectRight = faces[i].x + faces[i].width;
float rectBottom = faces[i].y + faces[i].height;

如果这仍然不是您想要的,那么请发布一个我们可以实际运行的小示例。使用硬编码值而不是依赖于 opencv,这样我们就可以复制粘贴您的代码并自己查看问题。

【讨论】:

  • 感谢您的帮助。您的解决方案有效。如果可以的话,我会投票,但我还没有足够的声誉。
  • @JCorkhill 没问题。对于这样的问题,我发现在方格纸上画出一些例子很有帮助。如果您觉得有帮助,您可以随时接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多