编程时发现用cvcircle只能画出目标的当前位置,通过百度发现一种思路,目前正在实验中。。
你获取了手心位置当前的坐标以后用来做起点,再持续跟踪,把下一个手心坐标做终点画线,就这么一直画不就是运动轨迹了么就是保存当前捕捉到的坐标a,然后下次捕捉到坐标b的时候用这对坐标画线,更新a坐标为b的值,再捕捉到下一坐标b画线,重复就行了
画线是用line函数啊,你ciecle当然是一个点了。另外不用数组存坐标,用一个变量就行了,变量的作用域要确保在跟踪函数之外,可以用全局变量存。
根据上述思路进行了大胆的尝试!然后发现还是不行,只要当前图像一更新,之前画的轨迹就全都没了。
所以采取了下列思路:
开一个黑屏,画红色轨迹,等原背景图像全部更新完了,直接对着像素值全部贴在背景图像上。。笨办法
但是最终也实现了“实时”的显示轨迹。。。
关键代码如下:
//创建全黑图像
lineimage = cvCreateImage(cvSize(frame.cols, frame.rows), IPL_DEPTH_8U, 3);
int width=lineimage->width;
int height=lineimage->height;
for(i;i<height;i++)
{
uchar* pData=(uchar*)(lineimage->imageData+i*lineim