在opencv中通过跟踪手指画线
drawing line by tracking finger in opencv
我是 opencv 的新手,我想检测手指是否向上它会在屏幕上画一条线,我阅读了一些教程,我正在成功跟踪手指点并且正在更新 continuously.I做类似下面的事情。当我移动手指时,它确实画了一条短红线,但它是短暂的,之后就消失了。我需要画线留在那里,但我不知道该怎么做,也找不到解决方案,我真的很希望收到你的来信,非常感谢。
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
函数需要一个起点和一个终点。
要么"draw"一个像素一个像素,手指移动的所有坐标,如果你想让它跟着手指移动=>最后不会是一条线
或执行一些操作,这将告诉 "now the finger points to starting point" 和 "now it points to ending point"
我是 opencv 的新手,我想检测手指是否向上它会在屏幕上画一条线,我阅读了一些教程,我正在成功跟踪手指点并且正在更新 continuously.I做类似下面的事情。当我移动手指时,它确实画了一条短红线,但它是短暂的,之后就消失了。我需要画线留在那里,但我不知道该怎么做,也找不到解决方案,我真的很希望收到你的来信,非常感谢。
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
函数需要一个起点和一个终点。
要么"draw"一个像素一个像素,手指移动的所有坐标,如果你想让它跟着手指移动=>最后不会是一条线
或执行一些操作,这将告诉 "now the finger points to starting point" 和 "now it points to ending point"