两个形状之间的距离opencv

时间:2015-04-11 15:19:38

标签: c++ opencv distance measure

有谁知道我如何计算上部形状的蓝点直接到下面那个边界之间的距离? 我有点的坐标。 我试图逐点检查颜色,直到它到达下面的白色部分,但它消耗了太多的硬件。 (我在黑色部分开始了位置Y,但我可能做错了......)

Binary Shapes

while(true){
        p = pixelColor.ptr<Point3_<uchar> >( positionY, positionX);
        if((p->z==255)&&(p->y==255)&&(p->x==255)){
            cout<<"Found"<<endl;
            break;
        }
        positionY++;
}

2 个答案:

答案 0 :(得分:0)

你可以使用二分法,你取一半的高度,如果是黑色,你在下半部分工作,如果是白色,那么最上面一个然后你做同样的等等直到你收敛。你的O(log2(height))O(height)。然而,您可能会因问题而出错(例如:带有白色,黑色,白色,黑色交替的列。

您也可以在单一频道上工作。

然而,这是一个非常简单的循环,如果它消耗了太多的硬件,你将无法通过其他方式做很多事情。

答案 1 :(得分:0)

由于图像的大小变化很小,因此您可以对每第n个像素进行采样。但是,您的代码看起来很好,如果存在速度问题,请检查内存泄漏或其他线程中的无限循环。