Задать вопрос
  • Как мне разделить изображение на зоны?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Все достаточно просто. На изображении выделяете "области интереса", пусть это будут прямоугольники с координатами x0:y0 - x1:y1. Пробегаете по всем прямоугольникам и считаете "плотность" прямоугольника, если плотность отличается, то в этом прямоугольнике что-то находится - включаете нужный моторчик.
    Плотность посчитать очень просто - среднее по всем точкам прямоугольника.
    Более подробно, рекомендую книжку Гонсалеса (как бы азбука цифровой обработки)- https://www.ozon.ru/product/tsifrovaya-obrabotka-i...

    Ах, ну, да... Что-то я сомневаюсь, что в интеренете не нашлось, как кропнуть область из изображения! Вот например с использованием opencv (прям вот для python и C++, как заказывали) - https://learnopencv.com/cropping-an-image-using-opencv/
    Ответ написан
    2 комментария
  • Как сделать проверку символов с возвратом на строку кода?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Есть много вариантов, как сделать проверку.

    Например, сделать функцию проверки, скажем check_answer, которая принимает строку ответа и возвращает логическое значение (если всё хорошо, то True, иначе False).
    Затем сделать конструкцию
    while not check_answer(otvet):
        otvet = input()

    и пока check_answer не вернёт True, этот цикл будет повторяться.

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

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

    С другой стороны,
    python позволяет всё плотненько скомкать чуть не до пары длиннющих нечитаемых строк, но так делать вам пока не надо.
    Ответ написан
    3 комментария
  • Как импортировать переменные с функциями?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Вы должны делать всё наоборот:
    Вам надо работать только в модуле main, и в него импортировать в т.ч. функции из других модулей. Тогда импортированным функциям при их вызове из кода main станут доступны необходимые переменные.
    Лучше всего делать функции так, чтобы они явно получали в параметрах все необходимые им переменные и явно возвращали все результаты через return. Тогда будет меньше риска, что где-то что-то будет происходить «само собой».
    Ответ написан
    Комментировать
  • Можете пожалуйста помочь с ошибкой в программе в Python?

    @ceytnot
    Работаю не по специальности (:
    Мало данных. Непонятно какой вы пользуетесь библиотекой и пользуетесь ли вообще. Фрагмент кода, видимо, является частью класса. Обе ошибки по сути указывают на то, что у вас нет атрибута sound в классе MP3player, о чем собственно в описании ошибок так и написано. Разберитесь с этой строчкой: pos = self.sound.get_pos() и с атрибутом sound. Действительно ли он там должен быть и правильно ли вы его записали.
    Ответ написан
    Комментировать
  • Как передать переменную из html в sql запрос python?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вам надо на время оставить программирование и изучить две гораздо более важные вещи:
    Во-первых, надо научиться структурно мыслить. В частности, разобраться, что ваш вопрос состоит из двух совершенно разных, никак не связанных между собой частей:
    1. как в Flask получить данные формы
    2. как передать переменные в sql запрос

    А во-вторых, научиться пользоваться интернетом. Потому что ответов на оба эти вопроса, в том числе и на данном сайте, просто миллионы.
    На первый (ссылка из ответа на qna.hab.com): https://flask.palletsprojects.com/en/1.1.x/quickst...
    На второй: https://qna.habr.com/q/1002781
    Ответ написан
    Комментировать
  • Как начертить правильный n-угольник с центром в точке (x, y) на поверхности шара?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Удобно ввести новую систему координат и потом откладывать ее базисные векторы нужное количество раз.
    Эта система будет иметь центр на радиусе сферы к центру оружности и лежать на "хорде" - плоскости в которой лежит многоугольник. В ней ваш многоугольник будет просто на плоскости.

    Из простейшей геметрии вы знаете, что этот центр координат будет на расстоянии sqrt(R^2-r^2) от центра сферы - так радиус окружности на сфере будет r.

    Первый базисный вектор будет вдоль радиуса из центра сферы к центру многоугольника и координата там будет всегда 0.
    Теперь вам надо найти еще какой-то вектор в плоскости многоугольника, а третий вектор потом найдете через векторное произведение. Хорошо бы этот второй вектор взять на север, тогда ясно куда класть первую точку по условию. Если только центр окружности не лежит строго на свере, то можно взять и спроецировать на плоскость вертикальный вектор (0, 0, 1) и все (а в противном случае проецируйте, допустим (1, 0, 0). А дальше останется только взять формулы для многоугольника на плоскости x = cos(2*pi/n*k)*r y = sin(2*pi/n*k)*r, ну и не забыть перевести все в обычную систему координат.

    Итак, пусть xo,yo,zo - точка на сфере, где лежит центр. xo и yo не нули одновременно. Еще даны R, r и n.

    Центр новых координат:
    L = sqrt(R^2 - r^2)
    x1 = xo/R*L
    y1 = yo/R*L
    z1 = zo/R*L

    Первый базисный вектор:
    e1 = (x0, y0, z0) / R
    Второй базисный вектор (нормализованный (0,0,1) - (0,0,1)*e1):
    e2 = (-x0*z0/R/sqrt(R^2- z0^2), -y0*z0/R/sqrt(R^2- z0^2), sqrt(R^2-z0^2)/R)

    третий базисный ветор, найдите сами через векторное произведение.

    А дальше координаты k-ой точки:
    p = (x1,y1,z1) +e2*cos(2*pi/n*k)*r+e3*sin(2*pi/n*k)
    Ответ написан
    Комментировать
  • Так какой же приоритет операторов == и in?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Оно равносильно записи print(5 < 4 > 3)
    или
    print(True == 0 and 0 in [0])
    Ответ написан
    4 комментария
  • Как исправить ошибку в этом коде?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Вы не смогли перевести текст ошибки?
    64250a173e58f641881098.png
    Ответ написан
    Комментировать
  • Как сделать при вводе нескольких слов через запятую, чтобы каждое слово сохранялось в переменную (количество слов не определенно)?

    @tuwkan
    Для таких вещей придумали массивы, каждое слово будет элементом массива и никак не пересекаться с другими.
    Чтобы этого достичь есть функция split
    Ответ написан
    2 комментария
  • Как в python создать interface?

    fenrir1121
    @fenrir1121
    Начни с документации
    Смотря о каком определении интерфейса речь. Если речь о формальных интерфейсах, для питона явный способ это сделать это использовать абстрактый базовый класс ABC.
    Применительно к вашему случае я бы предложил посмотреть на построители классов данных, например NamedTuple и dataclass
    Ответ написан
    2 комментария
  • Как шифровать текст в python?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    способ расшифровки должен быть непопулярным.

    А вот это уже смешно. Чем тебя не устраивают популярные способы типа RSA?
    Ты, видимо, не слышал о термине Security through obscurity , на котором обожглись многие и ты хочешь повторить их путь
    Ответ написан
    10 комментариев
  • Как сделать SQL запрос из двух таблиц?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Пока на ум приходит получить все категории, потом в цикле пройтись по ним и...

    Естественно это не делается так. Такие задачи решаются на стороне бд через джоин таблиц. Не считая ошибки синтаксиса и отсутствия лимита, запрос в ответе Vindicar подойдет. Схема хранения не самая лучшая, так как по сути у вас получается один-ко-многим (одна категория ко многим постам), и если категорий на 1 пост будет больше 1, вся структура идет в мусор. Более качественным решением все же будет многие-ко-многим между постами и категориями.
    Ответ написан
    1 комментарий
  • Как сделать SQL запрос из двух таблиц?

    Если данных в каждой категории немного - то оверхед от дублирования в каждой строке результата небольшой, и ответ Vindicar прекрасен.
    Если оверхед большой, то:
    1. получаете первым запросом категории,
    2. сохраняете в какую-то структуру, где ключом служит id категории,
    3. выбираете посты одним запросом, с фильтром по id нужных категорий,
    4. в процессе разбора результатов этого запроса, распихиваете посты сразу по нужным категориям.
    Ответ написан
    1 комментарий
  • Как написать свой компилятор?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Трансляторы
    Седой и строгий
    Содержимое этой книги в ответ не вместится.
    60b76e70c748b529799442.jpeg
    А ваш вопрос на столько общий, что короче не получится.
    Ответ написан
    3 комментария
  • Как подсчитывать на видео проходящих людей по головам?

    @rPman
    Боюсь ты не найдешь готовых решений
    Мало того, тут нужно искать размеченный датасет голов людей и радоваться этому богатству

    Решение для тебя - берешь несколько сотен тысяч видео (разные времена года), нанимаешь десяток человек в помощники и садишься размечать, затем берешь готовые решения по нейронкам, арендуешь на недельку себе кластер с gpu или на месяц другой игровую видеокарту и вперед с примерами от pytorch пилишь результат.

    Теперь советы - прежде чем работать с нейронкой, попробуй другие решения, например благодаря тому что видеокамеры у тебя не двигаются, ты можешь получать объекты через разницу дефолтной картинки и текущей (так же можно просто считать по каждому пикселу гистограмму частоты значения интенсивности во времени (лучше брать HSV а не RGB) и вычитать из текущего изображения те цвета, что дольше всего на видео (осторожно в час пик магазин может часами быть битком забитый), добавляешь сюда алгоритмы локального детекта движений (строится карта векторов по всему изображению), т.е. ты можешь с высокой точностью детектировать кусок кадра на основе видео (несколько соседних кадров) который однозначно можно считать человеком (или несколькими), и вот уже вырезая их ты можешь начинать разметку видео для нейронки

    p.s. после того как ты на все это портатишь от нескольких сотен тысяч рублей до миллионов, к тебе подойдет такой же как ты сейчас и скажет, а дай мне готовые веса твоей нейронки... куда ты его вежливо пошлешь?
    Ответ написан
    1 комментарий
  • Как работает этот код?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    context = {}
    
    last_command_use_time = context.get(user[0].id) # Возвращает время последней команды пользователя или None, если нет значения
    
    if not last_command_use_time or (datetime.datetime.now() - last_command_use_time).seconds > 10: # проверяет, что last_command_use_time  - None (т.е. данных о юзере нет) или с момента обращения прошло больше 10 секунд
    
        # команда
    
        context[user[0].id] = datetime.datetime.now() # Записывает текущее время использования команды
    
    else:
        # сообщение о том что нужно подождать

    И как можно получить время которое осталось до следующей возможности выполнения команды?

    Намекну - в строке с if есть почти готовый кусок, который нужно чуть изменить.
    И да, судя по тому, что вы не можете прочесть элементарный код - отложите болошлепство и почитайте учебник.
    Ответ написан
    Комментировать
  • Как мне получить результат из асинхронной функции?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ключевое слово await
    myvar = await myfunc()

    Ключевое слово await указывает, что при выполнении следующего за ним выражения возможно переключение с текущей сопрограммы на другую или на основной поток выполнения.
    Соответственно выражение после await тоже не простое, это должен быть awaitable объект.
    Ответ написан
    2 комментария
  • Как можно сделать виртуальную «флешку», которая будет отображаться в проводнике windows 10?

    hint000
    @hint000
    у админа три руки
    На винде есть родная (не требующая что-то устанавливать) команда subst, запускается с параметрами из командной строки и создаёт "диск" из локальной папки.
    Той же командой с другими параметрами можно удалить такой "диск".
    https://ru.wikipedia.org/wiki/Subst
    Кстати, это способ из 90-х годов, ныне почти забытый.

    Можно из Python'а выполнить системную команду.
    Ответ написан
    4 комментария
  • Можно ли эмулировать нажатие на кнопку на сайте библиотекой Бютифул суп?

    Maksim_64
    @Maksim_64
    ML Engineer
    beatifulsoup это парсер для html и xml документов. И к нажатиям кнопок не имеет никакого отношения от слова совсем.
    Ответ написан
    1 комментарий
  • Можно ли эмулировать нажатие на кнопку на сайте библиотекой Бютифул суп?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    На Авито эту кнопку сделали как раз для того, чтобы парсеры обламывать.
    Ответ написан
    2 комментария