Задать вопрос
  • Какие способы есть подготовки изображения к дальнейшему распознаванию текста с помощью Python?

    Vindicar
    @Vindicar
    glu-dimaz, connectedComponentsWithStats() обрабатывает бинарное черно-белое изображение и находит в нём изолированные белые "пятна" (блобы), после чего создаёт карту, на которой каждый независимый блоб имеет свою метку (значение пикселей). Для каждого блоба возвращается его метка, его ограничивающий прямоугольник, его площадь и координаты центроида (точки внутри блоба).
    Соотв. можешь ориентироваться на высоту ограничивающего прямоугольника - если масштаб скана более-менее одинаков, то все блобы-символы должны быть примерно одной и той же высоты.
    Выбрав из массива блобы-символы, перекопируешь их на новое изображение, и уже его распознаёшь.
    Написано
  • Как установить нужную версии aiogram PyCharm?

    Vindicar
    @Vindicar
    cornwr, возьми за основу официальные примеры, например, тот же эхобот. Он тебе покажет, как организовывать работу бота в целом. Дальше перетаскивай обработчик за обработчиком в нового бота. Насколько я знаю, работа с пользователями, сообщениями и т.п. не сильно изменилась.
    Написано
  • Как установить нужную версии aiogram PyCharm?

    Vindicar
    @Vindicar
    Так код-то у тебя вроде невелик, не проще ли переписать его под aiogram3 (он-то, надеюсь, ставиться)?
    Написано
  • Считывание ключа домофона через NFC?

    Vindicar
    @Vindicar
    dofisdofsd335GF, перечитай и осознай ответ выше, а?

    В телефонах NFC-модуль рассчитан на очень конкретный диапазон частот (в районе 13,56 МГц), который отстоит очень далеко от диапазона частот для RFID-меток и ключей. Ты можешь использовать отдельные девайсы-клонилки, даже тот же Флиппер это умеет. Но смартфоны тут ни о чём.
    Написано
  • Почему изменяется узел, который я создаю и засовываю в массив?

    Vindicar
    @Vindicar
    limaximy, польза в простоте, оптимизации и в необходимости для других механизмов.
    Значения по умолчанию для аргументов функции вычисляются один раз - в момент создания объекта функции. Не забываем, что в питоне функции - это такие же объекты, как числа, строки, списки и т.д.
    Объявление функции - это такой же оператор, как if или while.
    А дальше классический вопрос про лямбду. Что выведет этот код?
    funcs = []
    for i in range(5):
      funcs.append(lambda: print(i))
    for f in funcs:
      f()

    Правильный ответ: 5 раз выведет 4, потому что лямбды ссылаются на саму переменную i, а не на её текущее значение. Чинится это так:
    funcs = []
    for i in range(5):
      funcs.append(lambda x=i: print(x))
    for f in funcs:
      f()

    Это сработает как надо, потому что значение по умолчанию аргумента x будет запомнено в момент создания лямбды, и не будет меняться. Если это поведение изменить, то не будет вменяемого способа зафиксировать текущее значение переменной при создании лямбды. В принципе, всё вышеописанное применимо и не к лямбдам, а к обычным функциям.

    Если фиксировать значения вместо переменных, это мало того, что сломает глобальные переменные, но и создаст проблемы из-за того, что мутабельные и немутабельные типы будут вести себя по-разному - т.е. как раз то, от чего ты хочешь уйти. Но в ещё большем масштабе.
    Написано
  • При нажатии на button, вызвать cmd?

    Vindicar
    @Vindicar
    AmanitaRubescens, тогда модуль subprocess в руки. Если команда короткая, то можно прямо в обработчике команду запускать. А если долгая и спамит в консоль, придётся заморочиться с отдельным потоком и своевременным выкачиванием данных из stdout/stderr.
    Написано
  • Как сделать так чтобы объединённые ячейки тоже показывались в print?

    Vindicar
    @Vindicar
    SoySois, эуто уже сложнее. Тогда тебе надо помнить о каждой ячейке с rowspan, которую ты видел, и подставлять её значение.
    Написано
  • Как сделать так чтобы объединённые ячейки тоже показывались в print?

    Vindicar
    @Vindicar
    SoySois, а пустая ячейка - это <td></td> в разметке, или вообще ничего? В первом случае код увидит тег, а в нём пустую строку. Во втором случае код не увидит ничего. Тут только проверять длину списка, и разруливать ситуацию в зависимости от неё.
    Написано
  • Как решить задачу на определения ближайшего др сотрудника?

    Vindicar
    @Vindicar
    Оформи код, нечитаемо же. Кнопка </> в помощь.
    Написано
  • Почему данные не выводятся?

    Vindicar
    @Vindicar
    MioShina, ну просто для проверки... если вместо row['id'] написать row.id? Или row[0]?
    Первое не должно, по идее, ничего изменить. А вот второе может.
    Написано
  • Почему данные не выводятся?

    Vindicar
    @Vindicar
    MioShina, ну да, что-нибудь вроде
    results = cursor.fetchall()
    print(len(results))
    for row in results:
      print(row)
    Написано
  • Почему данные не выводятся?

    Vindicar
    @Vindicar
    А если отладочный print() добавить, у тебя в results точно нужные данные лежат?
    Написано
  • Каков должен быть sys.path у чистого Python 3.1x под Windows?

    Vindicar
    @Vindicar
    А из этого репозитория не заводится? У меня оттуда как минимум 3.10 успешно на семерке завёлся.
    https://github.com/adang1345/PythonWin7
    Насчёт 3.12 - там была проблема с поиском подходящей версии numpy.
    Написано
  • Как исправить ошибку отключения распознавания речи?

    Vindicar
    @Vindicar
    Это не принципиально. В основном приложении используется subprocess.run(), он затормозит поток пока запущенный процесс не закончит работу. Сколько потоков в запущенном процессе - не важно.
    Написано
  • Классы. Принцип работы __add__ с __radd__?

    Vindicar
    @Vindicar
    Raddzor788, а что не понятного? У тебя в __add__() вызов return Commuter5(self.value + other).
    Это реализует такую цепочку вызовов:
    1. self.value + other вызывает int.__add__(self.value, other)
    1.1 Так как int не знает, как прибавить к себе Commuter5, отрабатывает Commuter5.__radd__(other, self.value)
    2. Commuter5.__new__() (унаследовано от object.__new__()) создаёт новый экземпляр класса Commuter5.
    3. Commuter5.__init__() получает экземпляр из 2 и то, что было вычислено в 1.1, и инициализирует этот экземпляр.
    4. return возвращает инициализированный экземпляр из 3, завершая вызов Commuter5.__add__().

    Т.е. у тебя __init__() заполняет данными новый экземпляр.
    Написано
  • Классы. Принцип работы __add__ с __radd__?

    Vindicar
    @Vindicar
    Raddzor788, код оформляй кнопкой </> в редакторе, сайт не поддерживает маркдаун.
    И свой поток создания тоже, пожалуйста, структурируй на абзацы.
    Чем читаемее вопрос - тем больше будет желающих его читать - тем больше шансов получить ответ.
    Написано
  • Упустил, но что?

    Vindicar
    @Vindicar
    Мне кажется, или код для медианы предполагает, что список отсортирован?
    А ведь у нас нет гарантий, что это так.
    Написано
  • Что за папки появились в корне системы Ubuntu?

    Vindicar
    @Vindicar
    CityCat4, ну справедливости ради, структура корневого каталога в никсах - тот ещё исторически сложившийся бардак, прям как в винде.
    По-хорошему-то надо порядок навести, но никто не рискнёт.
    И да, то, что делает каноникал - порядком не назовёшь.
    Написано
  • Не получается записать в файл?

    Vindicar
    @Vindicar
    Ты уверен, что работаешь с нужным файлом reminders.json? У тебя относительный путь.
    Написано
  • Как реализовать систему рекомендаций с телеграм боте на aiogram (по типу давинчика)?

    Vindicar
    @Vindicar
    peck69, а вот это уже сам подумай. Да, это не самая простая задача. Но в гугле кое-что можно найти.
    Написано