2012-02-17 2 views
6

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

Я представляю систему, в которой камера установлена ​​в положение фиксации, фокусируясь на плате расписания. Периодически камера делает снимок платы. Я хочу написать код для расшифровки тегов имен в какой области. Для этого потребуется некоторое распознавание символов или распознавание символов. На каждом теге имени есть большие числа, которые я буду использовать для идентификации человека, чей это тег имени.

Я, естественно, отправляюсь на Python при решении новой проблемы программирования. Я нашел этот пост ->python image recognition, который выглядит как хорошее место для начала (с PIL и numpy).

Знаете ли вы, как это сделать?

Обновление: Я пробовал SimpleCV и покажется хорошим.

+2

Вы можете, я думаю, сделать вашу задачу проще, если вы добавили штрих-код в теги имен или написали числа в шрифте, предназначенном для облегчения распознавания. –

ответ

4

Это на самом деле довольно сложная проблема, хотя она выглядит довольно просто. Но вы можете сделать это намного проще, сделав некоторые вещи для своего изображения, чтобы сделать это управляемым. У меня есть следующие предложения:

  • Попробуйте сделать это так, что камера смотрит прямо на плате с разумной линзой так, что минимальное искажение изображения по краям, и нет искажения перспективы.
  • Учитывая, что вы будете снимать случайное изображение для анализа, я думаю, что производительность никоим образом не является проблемой, поэтому снимайте изображения с высоким разрешением со вспышкой или с длительным временем экспозиции (потому что все, что вы снимаете, неподвижно), чтобы получить наилучшее качество изображения.
  • Если количество разных тегов, которые вы ожидаете, не слишком велико, вам может быть проще просто попытаться сопоставить ссылочные изображения этих тегов на вашем изображении через template matching, а не собираться для полного распознавания чисел. Это намного легче получить, если ваш образ достаточно хорош. python opencv interface очень полный.
  • High Performance Mark имеет хороший комментарий к вашему вопросу о включении barcodes на бирки. Я бы добавил опцию QR codes, но это то же самое. Оба легко обнаружить, и есть хорошие библиотеки, которые помогут вам их прочитать.
  • Если вы решили, что вам нужно OCR, вы должны изучить доступные пакеты OCR, а не пытаться катиться самостоятельно. Попробуйте pytesser для двигателя tesseract или OCRopuspython interface.
+0

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

+0

Да, если вы используете вспышку, вы должны позиционировать так, чтобы отражения b не стали проблемой. В общем, вы должны начать с хорошего изображения, которое вы можете получить. –

+0

Мне нравится идея штрих-кодов или QR-кодов. Возможно, четкая граница для каждого тега со штрих-кодом. –

2

Поскольку вы упомянули, что хотите использовать Python для этой проблемы, возможно, вы можете взглянуть на SimpleCV. Он предоставит вам простой способ захватить изображение с камеры и выполнить базовую обработку изображений.

0

Я полностью согласен с jilles de witt, что OCR будет чрезвычайно сложной задачей анализа изображений, чтобы развиваться с нуля. Чтение кода было бы лучшим вариантом, но это также будет сложно запрограммировать и потребует сложной или несколько сложной визуализации, как отмечали другие. Однако для этого приложения вам действительно не нужно реализовывать OCR или формальные штрих-коды, QR или другие 2d коды.

Поскольку ваше приложение ограничено ограниченным количеством целей, возможно, вы можете создать свой собственный простой код. Например, вы можете разместить от 0 до 4 больших точек в массиве 2x2 после имени каждого человека. Этот простой примерный код уникально идентифицирует 16 уникальных тегов, и функции будут намного проще в изображении, извлечении и декодировании, чем в формальных кодах. Добавьте строку локатора, если позиция кода не согласована.

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