我将根据从 OpenCV 读取的坐标跟踪对象。事情是这样的:为了使我的舵机正向转动 120 度,我需要再向舵机发送 3300 个。(对于 1 度,我需要再向伺服器发送 27.5 度)。
现在我需要找到我从 OpenCV 读取的坐标和我需要发送到伺服的值的关系。但是我无法理解 OpenCV 的坐标。例如,我不改变物体的高度,我只减少物体和相机之间的距离,在这种情况下,只有 z 值应该减小,但 x 值似乎也发生了显着变化。这是什么原因?
万一我的代码有问题(也许 x 没有改变,但我读错了),你能给我有关 OpenCV 坐标以及如何解释它的信息吗?正如我在开始时所说,我需要找到一个关系,比如我的伺服转动多少度对应于我从 OpenCV 读取的球 X 坐标的多少变化?
问候
@FvD 的编辑 1:
int i;
for (i = 0; i < circles->total; i++)
{
float *p = (float*)cvGetSeqElem(circles, i);
printf("Ball! x=%f y=%f r=%f\n\r",p[0],p[1],p[2] );
CvPoint center = cvPoint(cvRound(p[0]),cvRound(p[1]));
CvScalar val = cvGet2D(finalthreshold, center.y, center.x);
if (val.val[0] < 1) continue;
cvCircle(frame, center, 3, CV_RGB(0,255,0), -1, CV_AA, 0);
cvCircle(frame, center, cvRound(p[2]), CV_RGB(255,0,0), 3, CV_AA, 0);
cvCircle(finalthreshold, center, 3, CV_RGB(0,255,0), -1, CV_AA, 0);
cvCircle(finalthreshold, center, cvRound(p[2]), CV_RGB(255,0,0), 3, CV_AA, 0);
}