gpt4 book ai didi

c++ - OpenCV 示例程序 lkdemo

转载 作者:搜寻专家 更新时间:2023-10-31 01:23:57 25 4
gpt4 key购买 nike

引用,OpenCv\samples\c\lkdemo.c

有人知道以下代码片段的作用吗?

从 lkdemo.c 中提取的代码

 for( i = k = 0; i < count; i++ )
{
if( add_remove_pt )
{
double dx = pt.x - points[1][i].x;
double dy = pt.y - points[1][i].y;

if( dx*dx + dy*dy <= 25 )
{
add_remove_pt = 0;
continue;
}
}

if( !status[i] )
continue;

points[1][k++] = points[1][i];
cvCircle( image, cvPointFrom32f(points[1][i]), 3, CV_RGB(0,255,0), -1, 8,0);
}
count = k;

Q1.

粗线的作用是什么? >> 点[1][k++] = 点[1][i];

为什么是 k++?我很困惑,以为下一点被覆盖了当前点

Q2.

随着帧循环绘制cvCircle id,清除旧点并绘制新点的位置在哪里?

我期待您的意见。

谢谢 =)

最佳答案

问题 1:

如果我重构代码,也许它会有所帮助:

if( status[i] ) {
points[1][k++] = points[1][i]; // <---- Q1
cvCircle( image, cvPointFrom32f(points[1][i]), 3, CV_RGB(0,255,0), -1, 8,0);
}

所以在问题 1 的行中,i 总是递增(它通过循环递增)但 k 仅在 status[i] 为真时递增。简而言之,它通过复制它们来消除数组中 status[i] 为假的任何点,然后将数组的长度 (count) 设置为 k,即通过消除的数字。

关于c++ - OpenCV 示例程序 lkdemo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/339508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com