ozalexo 0 Жалоба Опубликовано August 9, 2011 Доброе время, Подскажите плиз, как получить top-left и bottom-right координаты маски, а точнее замакИрованного объекта? Это нужно, чтобы получить ROI (region of interests) из маски (которая может быть и с градиентом). Надеюсь, что есть иной способ, кроме как пробежаться по массиву самой маски. В приложенном изображении красным отмечены точки, координаты которых мне нужно получить: Про детектор углов уже читал, но в случае с маской типа "круг с градиентом" этот фокус не сработает. И, да, в opencv я пока нуб. Thanks in advance. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 9, 2011 Если я правильно понял задачу, то нужно определить минимальный прямоугольник, вмещающий в себя некоторое пятно с ярко выраженными гранями. Тогда нужно сначала скормить маску детектору контуров cvFindContours (есть стандартный пример в библиотеке). Затем аппроксимировать контур ломаной cvApproxPoly. Извлечь точки этой ломаной, и скормить их ф-ции cvBoundingRect, которая и даст Вам желаемый "up-right bounding rectangle". На форуме есть много примеров по работе с контурами см.тему "работа с контурами". 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ozalexo 0 Жалоба Опубликовано August 9, 2011 Если я правильно понял задачу, то нужно определить минимальный прямоугольник, вмещающий в себя некоторое пятно с ярко выраженными гранями. Тогда нужно сначала скормить маску детектору контуров cvFindContours (есть стандартный пример в библиотеке). Затем аппроксимировать контур ломаной cvApproxPoly. Извлечь точки этой ломаной, и скормить их ф-ции cvBoundingRect, которая и даст Вам желаемый "up-right bounding rectangle". На форуме есть много примеров по работе с контурами см.тему "работа с контурами". Минимальный прямоугольник - да. Ярко выраженные грани - нет. Но предложенный алгоритм может сработать даже и на градиенте. Т.к. это маска, то границы будут найдены довольно точно. Спасибо. Вот более детальный и точный пример: Маска: Интересуют координаты прямоугольника отмеченного синим (т.е. прямоугольные границы градинентного круга): Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 9, 2011 Ну тогда еще один шаг - бинаризация (cvThreshold). То есть все что не равно 0 сделать равным 255 и будут резкие границы. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ozalexo 0 Жалоба Опубликовано August 9, 2011 Ну тогда еще один шаг - бинаризация (cvThreshold). То есть все что не равно 0 сделать равным 255 и будут резкие границы. Спасибо. Вот оно, то, что нужно! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах