2015-04-11 6 views
-2

Кто-нибудь знает, как рассчитать расстояние между синей точкой в ​​верхней форме прямо до границы ниже? У меня есть координаты точки. Я пытался проверить цветную точку по точке, пока она не достигнет белой части firgure ниже, но она потребляет слишком много аппаратного обеспечения. (Я начинаю в Позицию Y черной части, но я могу делать что-то неправильно ...)Расстояние между двумя формами opencv

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

Обратите внимание, что 'p-> z = 0' присваивает 0' p-> z'. Вместо этого вы хотите сделать 'p-> z == 0'. То же самое для 'y' и' x'. Вы хотите проверить только один столбец? – ChronoTrigger

+0

исправлено. Да, мне просто нужно добраться до границы нижней формы. – Felipe

ответ

0

Вы можете использовать дихотомию, вы взять точку половины высоты, если черные, вас работайте в нижней половине, если белый, верхний, тогда вы делаете то же самое и т. д., пока не сходите. Это O(log2(height)), а ваш O(height). Однако вы можете получить ошибки в зависимости проблемы (например:.. столбцы с белыми, черными, белыми, черными alternances

Вы также можете работать на одном канале

Однако, это довольно простой цикл, если это потребляя слишком много аппаратного обеспечения, вы не сможете многое сделать остальным.

+0

Я постараюсь, спасибо. – Felipe

+0

Это может быть хорошая техника, но вы должны быть осторожны. Черный пиксель может означать, что вы находитесь в черной области между белыми каплями или что вы находитесь в черной области после второго блоба. Аналогично, белый пиксель может означать, что вы находитесь в первом блобе или, возможно, втором. – ChronoTrigger

0

Так как редко бывает, что изображение имеет существенные изменения 1 пиксель в размере, вы можете пробовать каждый n-й пиксель. Однако ваш код отлично смотрится, если есть проблема с скоростью, проверьте утечки памяти или бесконечные петли в других потоках.

Смежные вопросы