使用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].x
和faces[i].y
中减去一些值,直到我到达右下角的顶点,但我发现网络摄像头中的脸部深度使得这种方法不起作用。
有了这个,我怎么能找到上面提到的矩形顶点,以便我可以正确地绘制线?
答案 0 :(得分:0)
矩形的x
位置为您提供左侧。因此x+width
为您提供了正确的选择。
同样,矩形的y
位置会为您提供顶部。所以y+height
给你的底线。
float rectRight = faces[i].x + faces[i].width;
float rectBottom = faces[i].y + faces[i].height;
如果那仍然不是你想要的,那么请发一个我们可以实际运行的小例子。使用硬编码值而不是依赖opencv,因此我们可以复制并粘贴您的代码并自己查看问题。