我是opencv的新手,我想检测一个手指是否在屏幕上画一条线,我阅读了一些教程,我成功地跟踪了Point Point并不断更新它。当我移动手指时,它确实会画一条红色短线,但它是短暂的,并在此后消失。我需要绘图线留在那里,但我不知道该怎么做,我找不到解决方案,我真的很希望收到您的来信,非常感谢。

int lastx = -1;
int lasty = -1;

void trackingfinger(....)
{
.........
if(drawing == true)
   draw(BGR_frame,Point finger)
}


void draw(BGR_frame, Point finger)
{
    int x = finger.x;
    int y = finger.y;

    if (lastx > 0 && lasty > 0 && x > 0 && y > 0)
    {
    line(BGR_frame, Point(x, y), Point(lastx, lasty), Scalar(0, 0, 255), 2);
    }

    lastx = x;
    lasty = y;
}

int main (void)
{
 while(true)
{
..... the function is called here.
}
}

最佳答案

如果我正确理解了代码的呈现部分,则无法以这种方式进行。您如何决定何时开始绘图以及何时结束绘图? line函数需要一个起点和一个终点。

逐个像素“绘制”手指移动的所有坐标,如果您希望它跟随手指=>结束,则不会是一行

或执行一些操作,该操作将告诉“现在手指指向起点”和“现在手指指向终点”

关于opencv - 通过在opencv中跟踪手指来画线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36919942/

10-11 23:00