2015-12-01 3 views
0

Я работаю над приложением, которое будет сравнивать гистограммы в надежде сопоставить лица. Приложение позволяет пользователю сделать снимок, выбрать несколько ключевых точек на изображении, а затем приложение рисует круги вокруг этих точек. Затем я обнаруживаю круги с помощью функций OpenCV Hough Circle Transform. До этого момента приложение отлично работает.Обнаружить фигуры и создать гистограммы

Что мне нужно реализовать в настоящее время является одним из двух вариантов:

  1. Detect круги и создавать отдельные гистограммы для области внутри каждого круга.

  2. Обнаружите круги и затемните области вокруг кругов и создайте одну гистограмму.

Я склоняюсь к методу 2, но я не уверен, как маска/цвет/краска вокруг области за пределами кругов после их обнаружения. Любой вход был бы оценен. Благодарю.

ответ

0

Вместо того, чтобы рисовать область вне кругов в исходном изображении, почему бы не создать новое изображение и не скопировать содержимое кругов на него?

Другое указывает на то, что гистограммы не зависят от перевода. Таким образом, неважно, скопируете ли вы круги в точные места на новом изображении.

Проясните, не ответил ли я на ваш вопрос или у вас остались другие вопросы.

+0

Спасибо Тоторо. Вы второй момент понятен. Мне нравится ваша идея просто копировать важные регионы, я не совсем уверен, как это реализовать. Я знаю, что я могу вырезать/обрезать растровое изображение с использованием классов Canvas и Paint, но указание уникального пути (путей) на вырезание кажется немного недоступным на данный момент. – Rob

+0

Если пользователь выбирает точки, вы можете использовать функцию для вычисления всех точек внутри круга вокруг этой точки в определенном радиусе. Алгоритм имеет следующий вид: 1. Возьмите квадрат вокруг точки с точкой в ​​центре и диаметром круга, равным стороне квадрата. 2. Для каждой точки этого квадрата вычислите расстояние от центра. Удалите точки с расстоянием больше радиуса круга и скопируйте остальные на новое изображение. cv :: Mat - отличный класс, где вы можете многое сделать. Вы будете любить большинство функций, которые вам нужны прямо там. – Totoro

+0

Спасибо Тоторо. Из-за ограничений по времени я пошел с более простым (хотя и не столь точным) методом. Я создаю один большой прямоугольник, чтобы заключить область входных штрихов и вырезать прямоугольник с холстом, clipRect(). На данный момент я думаю, что этого достаточно, но я могу уточнить его позже для большей точности. Я ценю ваше время благодарю вас. – Rob

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