• Как найти паттерн на картинке с OpenCV?

    Vindicar
    @Vindicar
    RTFM!
    Во-первых, оформи код, нечитаемо. Кнопка </> в помощь.
    Во-вторых, matchTemplate(), насколько я знаю, не-инвариантна к поворотам и масштабу. Иными словами, поворот или изменение размера целевого объекта сломают сопоставление.
    В-третьих, на показанном кадре более одного экземпляра целевого объекта. Так предполагается или нет? Если предполагается, сколько экземпляров ожидается? Потому что разница очень большая с точки зрения методики.

    Варианта тут три.
    1. пытаться обучать под задачу нейронку. А лучше дообучить существующую, скажем, YOLOv5. Но тебе потребуется минимум несколько сотен размеченных изображений объекта в разных комбинациях, плюс в 2-3 раза больше похожих изображений без целевого объекта. Готовить такую базу будет утомительно, да и само обучение требует понимания что ты делаешь.
    2. попробовать зафиксировать угол поворота или масштаб (т.е. допустить, что он всегда одинаков). Тогда другой параметр можно будет подбирать. Например, мы фиксируем масштаб и делаем 16 изображений объекта в разных поворотах, а потом поочерёдно ищем каждый вариант на кадре. Потом анализируем силу откликов - сколько их, насколько они сильные и т.д. Скорее всего, будет медленно
    3. взять за основу поиск по локальным особенностям. Он справляется с масштабом и поворотом, но не справляется с несколькими экземплярами объекта. Это можно забороть, если использовать скользящее окно. Иными словами, находим на кадре узнаваемые точки - локальные особенности (желательно достаточно много и достаточно плотно), используя алгоритмы вроде ORB или SIFT. Затем выбираем те из них, которые попадают в прямоугольную рамку-окно. Затем сверяем эти особенности с особенностями объекта, используя RANSAC или подобный метод. Если получилось хороше совпадение - значит, в этой рамке есть объект или значительная его часть, и мы можем оценить его позицию в кадре в целом. Повторяем процесс, сдвигая рамку, пока оно не "обойдёт" всё изображение. Тоже может быть небыстро, так как нам требуется неоднократный поиск по картинке.
    Ответ написан
    Комментировать
  • Почему кабель интернета не подключается?

    @SunTechnik
    Шанс, что розетка сдохла сама по себе, если не было непосредственного вмешательства - минимален.

    Диагностику начинают с анализа ситуации:
    Светится ли линк на порту компьютера и роутера?
    Если подтащить комп к роутеру и включить патч-кордом в тот же порт, есть ли связь?

    Работает ли ноут, другой комп от этой розетки?

    Если диагностика говорит, что проблема в трассе между розетками, только тогда имеет смысл начинать туда лезть. И то, лучше проверить тестером, который покажет расстояние до проблемы. Вполне может оказаться, что кабель повредили в середине...
    Ответ написан
    Комментировать
  • Почему пайтон делит не верно?

    @Everything_is_bad
    и по какой то причине при делении числа 0.000866 на 10000 я получаю 6.928e-08 или 0.0000000694, хотя должно быть 0.0000000866

    >>> 0.000866 / 10000
    8.660000000000001e-08


    я разрабатываю трейдинг бота
    и не знать про Decimal, это конечно пять.
    Ответ написан
    9 комментариев
  • Как вычислить географические координаты объекта на панорамной фотогрфии?

    hint000
    @hint000
    у админа три руки
    Из исходных данных - панорамные фотографии, снятые через небольшие (секунды) промежутки времени с координатами в exif
    Координаты чего? Самой камеры? При том, что камера постоянно накодится в одной точке и эти координаты на всех фотографиях одинаковые?
    отсюда по азимутам между этих объектов на разных фото и координатам соседних фотографий вычислять направление севера
    Откуда возьмёте азимуты, если компаса нет?
    Панорама круговая (на 360 градусов)? Если да, то вы только сможете вычислить, сколько пикселей составляют какой угол, а на основе этого вычислить углы между объектами (но не азимуты объектов). И всё равно линейные расстояния будут неизвестны. Если панорама меньше, чем на 360 градусов, то даже для вычисления углов между объектами не будет данных.

    В любом случае потребуется как минимум одно калибровочное фото, для которого будет известно: 1) точный азимут на объект, 2) точное расстояние от камеры до объекта, 3) точные размеры объекта (высота или ширина). Тогда уже можно вычислять. Без этого исходных данных просто нет.
    И это ещё при отсутствии дисторсии у оптики камеры. А при наличии дисторсии потребуются точные данные о нескольких объектах в калибровочном кадре, чтобы можно было вычислить и в дальнейшем как-то учитывать дисторсию.
    Ответ написан
    2 комментария
  • Подключение ESP32 к ноуту на Windows10. Как исправить ошибку драйвера моста СР2102?

    @Pandamon Автор вопроса
    РЕШЕНО: в Диспетчере устройств - Порты (COM и LPT) - удалено "вместе с программами" ранеее установленное устройство USB to UART Bridge, которое конфликтовало с ПО, . Установлен драйвер CP210x версии 11.03.0.176 (13/04/2023) с сайта SiliconLabs (в файле описания - Win10, 11).
    При подключении видит ESP32 (с СР2102), скетч работает нормально.
    Ответ написан
    Комментировать
  • Переменные на кирилице?

    Vindicar
    @Vindicar
    RTFM!
    Позволяет. Использовать эту возможность не советую, и в придачу к приведённым выше причинам добавлю ещё одну, очень простую: ключевые слова и вся стандартная библиотека языка на латинице. Задолбаешься переключать раскладку.
    Ответ написан
    Комментировать
  • Windows ffmpeg bat. Почему, при запуске через bat, ведет себя под другому чем при запуске через cmd?

    Aetae
    @Aetae
    Тлен
    Потому что в bat % воспринимается как спецсивол, а в cmd - нет.
    Тупо сравни echo "%d".
    Надо экранировать: %%d.

    Почему так? Хз, не особо шарю за bat, гуглить надо.:)
    Но скорее всего ответ, как обычно: "так исторически сложилось".
    Ответ написан
    Комментировать
  • Где моя ошибка в питоне?

    grantur5707
    @grantur5707
    Full Stack Web Developer
    import math
    
    while True:
        a = int(input("ax^2+bx+c=0 / a: ")) 
        b = int(input("ax^2+bx+c=0 / b: "))
        c = int(input("ax^2+bx+c=0 / c: "))
        
        d = b ** 2 - 4 * a * c
        
        if d > 0:
            x1 = (-b + math.sqrt(d)) / (2 * a)
            x2 = (-b - math.sqrt(d)) / (2 * a)
            print(f'Корней: 2. \n x1 = {x1}')
            print(f'Корней: 2. \n x2 = {x2}')
            
        elif d == 0:
            x1 = -b / (2 * a)
            print(f'Корень: 1. \n x1 = {x1}')
            
        else:
            print("Корней: 0")
    Ответ написан
    Комментировать
  • Как можно реализовать решение с обратной индексацией?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну поработай с индексом да и все.
    Самое примитивное
    def __getitem__(self, index):
            try:
                return self.data[-(index+1)]
            except IndexError:
                return None
    Ответ написан
    Комментировать
  • Как быстро и легко зашифровать трафик?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Ответ написан
    Комментировать
  • Какая сложность у этого алгоритма?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Цикл while же выполняется пропорционально количеству цифр в числе..
    Да. А количество цифр в числе C это ⌊log10C⌋ + 1.
    Элемент суммы с меньшей степенью (1) отбрасываем, округление вниз убираем, основание логарифма неважно, получаем logC
    Ответ написан
    6 комментариев
  • Python pyautogui есть ли решение задачи?

    Vindicar
    @Vindicar
    RTFM!
    Нужно отложить скрипт, взять учебник по Питону, и почитать, что такое исключения и как с ними работать (оператор try-except).
    Тогда станет понятно, почему твой код не работает, и как его поправить.
    Ответ написан
    Комментировать
  • Почему Python не видит библиотеку?

    @Everything_is_bad
    import SpeechRecognition
    вот откуда ты взял этот код? Сам придумал? Открой доки SpeechRecognition и почитай как его использовать. И это надо делать сразу, перед тем как бежать сюда
    Ответ написан
    Комментировать
  • Как можно оптимизировать этот код?

    Vindicar
    @Vindicar
    RTFM!
    Для начала определи, что у тебя занимает время - скачивание, или парсинг. Подходы будут разные.
    Если хочется в лоб решать задачу - то multiprocessing в руки, даёшь дочернему процессу URL, он тебе возвращает структуру данных. Главный процесс раздаёт URLы и собирает ответы в какое-то итоговое хранилище.
    Пример работы с пулом процессов.
    Ответ написан
    Комментировать
  • Почему не получается спарсить названия учебных заведений?

    Vindicar
    @Vindicar
    RTFM!
    Ты хотя бы в браузере пробовал открыть исходный код страницы (обычно Ctrl-U)?
    Это динамический сайт, там по умолчанию в body два с половиной скрипта, которые уже подтягивают остальной контент. Конечно, ты его не получишь одним запросом.
    Выясняй, какой запрос скрипты делают для получения контента, и имитируй уже его. Консоль разработчика в помощь.
    Ответ написан
    Комментировать
  • В чем отличие между IRAMS10up60b и IRAMS10up60b-4?

    GavriKos
    @GavriKos
    Производитель говорит что она старая и ничего найти не можем. Mouser Electronics ответили что суффикс 3, и 4, и другие обозначают форму ножек, а внутренняя структура остается той же. Так-ли это? Могу-ли я вместо родной irams10up60b-4 поставить irams10up60b?


    Я бы верил производителю, а не рандомным чувакам с интернета
    Ответ написан
    1 комментарий
  • Почему else игнорирует существование if?

    Maksim_64
    @Maksim_64
    Data Analyst
    Проблема в типах данных cofe и flor - строки, а должны быть int.
    cofe = int(input('Сколько вы хотите кофе?: '))
    flor = int(input('Введите на каком вы этаже:'))

    Исключения не выходит из-за логического and if cofe in [1, 2, 3] and flor >= 100: он оценивает первое условие как False и не переходит ко второму.
    Ответ написан
    1 комментарий
  • Прирост в производительности после переноса алгоритма с Python на C++/C?

    Vindicar
    @Vindicar
    RTFM!
    У тебя вычисление повторяется для каждой строки? Посмотри, можно ли распараллелить код на несколько процессов (именно процессов, не потоков).
    Также посмотри насчёт использования numpy/scipy и их численных солверов для систем уравнений вместо sympy. Может, используя sympy, получится сформулировать алгоритм расчёта, а уже его портировать на numpy?

    Если надумаешь использовать numpy, держи в уме вот что: по возможности выполняй операции сразу над массивами значений. Упрощённо, вот это
    a = numpy.array([3] * 1000000, dtype=numpy.float32)
    b = 2 * a + 3

    будет намного быстрее, чем это:
    a = numpy.array([3] * 1000000, dtype=numpy.float32)
    b = numpy.zeros_like(a)
    for i in range(a.shape[0]):
        b[i] = 2 * a[i] + 3

    Причина простая - операции над массивами реализуют перебор элементов массива нативно, т.е. с той же проивзодительностью, что и C/C++/Fortran. А вот сугубо питоньи циклы - штука медленная.
    Ответ написан
  • Как здесь найти разницу потенциалов?

    @SunTechnik
    Читаем про закон Киргофа. Тут 1 контур.
    Ответ написан
    1 комментарий
  • Как преобразовать тип данных столбца в Pandas?

    Maksim_64
    @Maksim_64
    Data Analyst
    Преобразование типов здесь не при чем.

    вот здесь ты print(df[['market_cap'] > 0])
    Ты выполняешь операцию не с массивом а со списком. Списки ['market_cap'] > 0 такого не поддерживают. Если ты хотел выбрать подсет фрейма где капитализация больше нуля то пропустил df еще один.

    print(df[df['market_cap'] > 0])
    Ответ написан
    1 комментарий