2016-08-13 3 views
-1

Я очень новичок в программировании на Android и Java, но я хочу начать разработку некоторых приложений. Я уже установил Eclipse, Android SDK и Open CV, и я могу скомпилировать образцы, но я не могу понять, как они работают, потому что он очень отличается от C/C++, что я кое-что знаю. Я пытался найти что-то в Интернете, но я не нахожу много учебников для новичков. Что я хотел бы сделать сейчас, это приложение, которое определяет формы и цвета. Например, если я выберу желтые круги, приложение выделит желтые круги. Сначала я напечатаю это image на бумаге и попытаюсь определить, используя мой смартфон.начало работы на android openCV

PS: Извините, мой английский.

+1

Вы можете начать с [здесь] (http://stackoverflow.com/a/32077775/5008845), [здесь] (http://stackoverflow.com/questions/11424002/how-to-detect-simple- geometric-shapes-using-opencv) и [здесь] (http://www.pyimagesearch.com/2016/02/08/opencv-shape-detection/). Вы должны начать поиск в Google и вернуться к StackOverflow, когда у вас есть проблемы с программированием – Miki

ответ

0

There is a great article только для вашего вопроса, но он находится на AForge.NET framework. Несмотря на это, информация здесь может привести вас к правильному пути или подходу.

Если бы я вам с помощью OpenCV Я хотел бы сделать эти шаги, чтобы решить эту проблему:

  • На первом, я бы извлечь формы разных цветов. Существует функция для того, что называется InRange (может быть, помощь по этому вопросу вы можете найти в вопросе и моем ответе HERE. Извлеченные фигуры разных цветов должны храниться в разных объектах Mat, fe-формы для желтого, сохраненные в одном Mat, синий в другой и так далее. разделяющей различные цветовые формы этой добычи будет проще для последующей обработки.
  • После того, что контур находкой должен следовать. Это может быть сделано либо с Canny или findContours функций, но второй один будет предпочтительнее, потому что после InRange ваше изображение будет бинарным (маска). Затем каждая фигура должна быть сохранена в отдельном объекте Mat, используя их с помощью функции drawContours. Мне нужен многомерный массив или так, b Прежде всего, ваши фигуры должны сортироваться по цвету.
  • Тогда легче всего найти круги. Это можно сделать просто с помощью функции houghCircles. Эта функция может неправильно понимать пятиугольники с кругами, но с использованием правильных параметров она должна работать отлично. Подробнее HERE. Теперь вы знаете, какие фигуры представляют собой круги и их цвет.
  • В конце находим остальные формы и их типы. Это будет непросто. FIRST способ (я бы попробовал это сначала, вероятно, вероятно) упростил бы ваши контуры с помощью функции approxPolyDP. Затем, ради точности, вы можете использовать convexHull. После этого, если необходимо, проверьте каждую степень угла линии со следующей строкой, чтобы вы могли найти линии, которые вместе образуют, скажем, ~ 182-178 градусов (почти прямая линия). Эти линии должны быть объединены в один, потому что это ошибка упрощения контура. Проверьте, сколько линий имеет форма (или упрощенный контур), и это тип формы. SECOND метод будет найти houghLines на контурах. Затем, проверяя столкновения каждой строки с другой, чтобы узнать, сколько из них здесь, и формирование формы, содержащей эти данные. Дополнительная информация HERE.

Как вы поняли из моего текста, эта задача будет непростой задачей. Используя любой подход, это будет нелегко, но это вполне возможно, это довольно общая задача, о ней можно найти много информации.

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