Обнаружьте объект в изображении камеры в [закрытом] C#

Да я попробовал рабочую PS и регулярную командную строку как администратор. То же сообщение об ошибке подходит.

Другое возможное решение могло состоять в том, что необходимо предоставить доступ учетной записи пользователя к ключевому контейнеру, расположенному в C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys

9
задан live2 16 July 2018 в 19:27
поделиться

7 ответов

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

9
ответ дан 4 December 2019 в 12:20
поделиться

Вам необходимо выполнить фильтрацию и маски на изображении.

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

Вы также можете использовать пороговое значение изображения для обнаружения объекта. При желании вы можете ознакомиться с библиотекой обработки изображений ниже.

  1. Фильтры API для C, C ++, C #, Visual Basic .NET, Delphi, Python
  2. http://www.catenary.com/
  3. CIMG богаче, чем указанная выше библиотека, однако он написан на C ++
3
ответ дан 4 December 2019 в 12:20
поделиться

Один из (я полагаю, много возможных) подходов:

  1. Найдите фильтр, который «получает / вычисляет» прямые линии (края и т. Д.) Из данного изображения.

  2. Теперь у вас есть коллекция (массив) всех строк (xStart, yStart & xEnd, yEnd). Вы можете легко вычислить все длины линий по координатам.

  3. Теперь, учитывая, что вы всегда (!) Можете ожидать "один самый большой квадрат / прямоугольник" внутри изображения, было бы довольно легко найти и вычислить желательно-судоку-прямоугольник и вырезать его из изображения для дальнейшей обработки.

РЕДАКТИРОВАТЬ: Решение / программирование такого рода проблем всегда сложно, НО в то же время действительно интересно :).

1
ответ дан 4 December 2019 в 12:20
поделиться

Вы можете попробовать использовать Преобразование Хафа .

1
ответ дан 4 December 2019 в 12:20
поделиться

Я бы начал с использования углового детектора (детектор Харриса отлично работает), чтобы найти пересечения и углы сетки судоку.

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

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

Будьте готовы прочитать:)

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

Многие люди предлагали использовать нейронные сети. Я совершенно уверен, что использование нейронной сети для решения этой проблемы совершенно излишне. Сетевые сети (иногда) хороши, если вам нужно классифицировать объекты, где определение объекта нечеткое. «Найти автомобили на изображении» - это задача, которую можно использовать для нейронной сети, поскольку автомобили могут выглядеть совершенно по-разному, но иметь некоторые функции одинаково. Таким образом, имея достаточно данных, вы можете обучить свою сеть NN обнаруживать автомобили. В этой задаче у вас есть что-то очень регулярное и всегда выглядит почти одинаково, поэтому NN не сделает ничего проще или лучше.

1
ответ дан 4 December 2019 в 12:20
поделиться

Вы можете сначала попытаться найти пересечения жирных линий и использовать их в качестве регистрационных меток.

Это было бы хорошим началом, потому что:

  • Они довольно однородной формы
  • Вы знаете, сколько их
  • Вы знаете, где (примерно) они должны быть по отношению друг к другу
  • Можно допускать вариации масштаба

Итак:

  1. Применить краевой фильтр
  2. Отсканировать маску * того, как идеальный + должен выглядеть на изображении, записывая все, что хорошо сочетается
  3. Выберите набор, который лучше всего соответствует вашим ожиданиям, в зависимости от расположения относительно друг друга.
  4. Теперь вы также знаете, где должны быть числа, чтобы вы могли легко их извлечь.

* Более сложным решением было бы использование нейронной сети. Сеть вместо маски для распознавания пересечений. Это того стоит, поскольку вы, вероятно, собираетесь использовать его для распознавания чисел.

имеют довольно однородную форму
  • Вы знаете, сколько их
  • Вы знаете, где (примерно) они должны быть по отношению друг к другу
  • Могут допускать вариации масштаба
  • Итак:

    1. Примените краевой фильтр
    2. Отсканируйте маску * того, как должен выглядеть идеальный + на изображении, записывая все, что хорошо соответствует
    3. Выберите набор, который лучше всего соответствует вашим ожиданиям, в зависимости от расположения относительно друг друга
    4. Теперь вы также знаете, где должны быть числа, чтобы вы могли легко их извлечь.

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

    имеют довольно однородную форму
  • Вы знаете, сколько их
  • Вы знаете, где (примерно) они должны быть по отношению друг к другу
  • Могут допускать вариации масштаба
  • Итак:

    1. Примените краевой фильтр
    2. Отсканируйте маску * того, как должен выглядеть идеальный + на изображении, записав все, что хорошо соответствует
    3. Выберите набор, который лучше всего соответствует вашим ожиданиям, в зависимости от расположения относительно друг друга
    4. Теперь вы также знаете, где должны быть числа, чтобы вы могли легко их извлечь.

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

    1. Применение краевого фильтра
    2. Отсканируйте маску * того, как должен выглядеть идеальный + на изображении, записывая все, что хорошо соответствует
    3. Выберите набор, который лучше всего соответствует вашим ожиданиям , в зависимости от местоположения относительно друг друга
    4. Теперь вы также знаете, где должны быть числа, поэтому вы можете легко их извлечь.

    * Более сложным решением было бы использовать нейронную сеть вместо маски для распознавания перекрестки. Это того стоит, поскольку вы, вероятно, собираетесь использовать его для распознавания чисел.

    1. Применить краевой фильтр
    2. Отсканируйте маску * того, как идеальный + должен выглядеть на изображении, записывая все, что хорошо соответствует
    3. Выберите набор, который лучше всего соответствует вашим ожиданиям , в зависимости от местоположения относительно друг друга
    4. Теперь вы также знаете, где должны быть числа, чтобы вы могли легко их извлечь.

    * Более сложным решением было бы использовать нейронную сеть вместо маски для распознавания перекрестки. Это того стоит, поскольку вы, вероятно, собираетесь использовать его для распознавания чисел.

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

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

    0
    ответ дан 4 December 2019 в 12:20
    поделиться

    Не отвергая других идей, шаг 1 действительно должен заключаться в обнаружении поворота изображения. Вы можете сделать это, определив локальный градиент в каждой точке и создав его гистограмму. У него будет 4 основных компонента со смещением 90 градусов. В идеале это 0, 90, 180 и 270, но если это не так, вам следует повернуть изображение. Например, в примере изображения вы должны начать с поворота примерно на 8 градусов по часовой стрелке.

    0
    ответ дан 4 December 2019 в 12:20
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: