Задать вопрос
Ответы пользователя по тегу Python
  • Как в opencv достигается такая скорость работы?

    @rPman
    opencv это библиотека, использующая вычисления на видеокартах, используя Opnecl

    Opencl тут не виноват, причина высокой скорости GPU - ОГРОМНОЕ (десятки для дешевых и тысячи для дорогих) дубовых и от этого энергноэффективных проецессоров, каждый из которых подключен к своему независимому блоку оперативной памяти (там многоуровневая система, по разному организовано у amd/nvidia/intel). И еще, работа кода на этих процессорах ограничена одним правилом - выполняется только один код сразу на всех, это дополнительно позволяет сэкономить энергию и место на чипе.

    Если код без ветвлений, он сможет быть запущен на пиксельных конвеерах а работа с памятью линейна - это какраз те самые тысячи параллельных процессов будут загружены максимально оптимально.
    Ответ написан
  • Библиотека для покупки вещей?

    @rPman
    https://habr.com/ru/post/228209/

    ps Вопрос поставлен бездарно, каких вещей, где, как платить, причем тут 4 секунды?
    Ответ написан
  • Лучшие библиотеки для автоматизации в браузере, помимо Selenium?

    @rPman
    Что у вас тормозит? сам браузер или управление?

    Пишите приложение на вашем любимом языке программирования и используйте вебконтролы - .net - WebBrowser, mono - firefox, jawa и другие - WebKit, еще есть на базе chromium

    В этом случае работаете напрямую со страницей минуя посредника. В 99% случаев достаточно просто инжектить javascript на страницу.

    p.s. избавиться от браузера можно - если реверсить протоколы веб-приложения и симулировать его запросы с помощью curl но это бывает заметно сложнее (а почти невозможно).
    Ответ написан
  • Как записывать звук с динамиков?

    @rPman
    без питона
    в миксере необходимо выбрать в качестве источника стереомикшер (панель управления - звук - звукозапись)
    и уже после читать данные из миксера питоном или чем нравится

    https://docs.python.org/3/library/mm.html
    Ответ написан
    2 комментария
  • Как сделать общение между двух пользователей анонимным?

    @rPman
    Любой сторонний чат в веб, есть без регистрации, идешь на сайт, тебе генерируют ссылку (или даже можешь сам указать уникальный набор символов), рассылаешь участникам, каждый указывает себе какой хочет ник, общаешься, чат умирает после выхода из него последнего пользователя.

    Пример такого текст/аудио/видео чата - talky.io основан на открытых технгологиях и webrtc (данные не уходят на сервер, а гуляют только между клиентами напрямую)
    Ответ написан
  • Как сохранить открытый excel файл?

    @rPman
    Как только вы отдали файл в виде загрузки, вы потеряли к нему доступ, он не ваш, и следить за его изменениями и соранениями уже нужно на стороне пользователя, а он может его открыть 100500 способами, большинство из которых вам не понравятся (не оставляют никаких вариантов).

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

    Направления к размышлению для решения вашей задачи:
    - посмотрите решения от майкрософта office.live.com, это облачное решения (и кажется включая локальный сервер, за дорого) позволяющий открывать пользователю документ в браузере с интерфейсом почти идентичным десктопному приложению, кстати там есть бесплатные лимиты.
    - сформируйте документ таким образом, чтобы макросы в нем контролировали изменения и заливали их в каком то формате к вам на сервер, работать это будет в ограниченном списке ситуаций но хотя бы будет.
    Ответ написан
  • Как заставить OpenCV работать с Twitch'ом?

    @rPman
    по адресу twitch.tv/streamer_id нет видеоконтента, там html, но vlc умный, у него с помощью плагинов и сложной логики есть парсер, вытаскивающий видео из кучи типовых видео и стриминговых сервисов, а вот у opencl такой логики нет

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

    @rPman
    Язык почти никогда не создает проблем со скоростью, но их создают инструменты и библиотеки, которые используют разработчики, чтобы облегчить себе жизнь.

    И на php (phpreact) можно написать приложение, обрабатывающее 10к запросов в секунду на одном процессоре, а можно на nodejs (javascript) написать асинхронное приложение, которое штатным распаковщиком gzip будет тратить 99% времени на распаковку gzip а потом оставшуюся половину на копирование массива с данными (из-за чего скорость на порядок ниже php получается, реальный пример простой обработки БОЛЬШОГО количества упакованных текстовых дампов)

    Если же у вас проблемы создает обработка данных, пишите критичные вещи на c++ и подключайте модулем.
    Ответ написан
    Комментировать
  • Как печатать файл excel целиком?

    @rPman
    первый ваш пример - это запрос к операционной системе, запустить зарегистрированную команду на печать файла, второй же - загрузка документа библиотеками офиса в приложении, попробуйте уже тут из питона запускать печать, там метод так и называется PrintOut.

    p.s. Пишут что надо постранично пересохранять документ и для каждой печать делать
    Ответ написан
    5 комментариев
  • Python - как открыть любой файл через архиватор?

    @rPman
    Ищите сигнатуру rar, затем читая файл с э того места записывайте его в новый с нужным именем.

    Так как jpeg файл поток байт случайный, существует мизерная вероятность что в нем тоже попадется такая сигнатура, поэтому ищите в файле все нужные сигнатуры и сохраняйте несколько файлов в этом случае, затем проверяйте на целостность и оставляйте тот что не битый.
    Ответ написан
    5 комментариев
  • Обрезание изображения по 3 точкам opencv?

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

    Про треугольник ищите алгоритм попиксельной заливки треугольника или напишите его сами, для пиксилизации линии берите алгоритм Брезенхэма
    Ответ написан
    4 комментария
  • Не удается отправить файл на ftp сервер, в чем может быть причина?

    @rPman
    возможно вам нужно включить passive mode если между вами и сервером фаервол (например за NAT)
    ftp.set_pasv(true)
    Ответ написан
    2 комментария
  • Как при помощи нейронной сети разделить график на части?

    @rPman
    Есть интересный пакет библиотек и графический интерфейс Weka, в котором собрано огромное количество алгоритмов по работе с данными, поиску закономерностей и прочее прочее.

    Ваша задача зовется Классификация. гуглите исходя из этого, и нейронные сети в этом только один из вариантов, и не самый эффективный.

    p.s. 99% работы - принятие решения о форме подачи данных и их подготовка (конвертация) на вход в алгоритм. Т.е. вы можете пытаться рисовать график на растре и подсовывать этот растр нейронной сети (и платить просто бесконечные деньги на обучение), или вы можете придумать функцию, через которую прогоните свои данные, чтобы сделать их более представительными или скрывающую недостатки (например экстремумы в бесконечность),..
    Ответ написан
  • Python как растянуть изображение не увеличивая размер полотна?

    @rPman
    очевидно же что сначала нужно вычислить максимальную ширину изгибов линии, обрезать изображение таким образом чтобы в него попала вся эта линия и уже после этого отмасштабировать изображение по ширине
    Ответ написан
    Комментировать
  • Как создать инсталятор программы на C# с интерпретатором Python?

    @rPman
    Вы точно хорошо подумали, прежде чем выбрать такую странную смесь архитектур?
    p.s. правда я и сам бы мог так сделать, если бы потребовалось писать сложный интерфейс, а вычислительная логика уже была бы на python, так как в visual studio на .net писать сложные формочки удобнее всего (имхо).

    Если вас не интересует полноценная поддержка обновлений а так же вас не волнует что архив установки будет толстым (особенно это замечают когда будете делать частые обновления), тупо складывайте заранее установленный каталог python в отдельный каталог и пользуйтесь (максимум перед запуском переменные окружения прописывайте), в этом случае за обновление будете отвечать сами. Но даже в этом случае хорошим жестом будет являться предложение установки приложения без питона, ожидая его уже установленным на машине пользователя. Почему вариант таскать питон с собой плохой? - поддержка, через три десять лет, чтобы запустить ваше приложение с поддержкой современного оборудования, понадобится пуд соли и ершик для чистки унитаза (особенно это актуально для gpgpu/opencv подсистем).

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

    Если у вас linux с нормальными пакетными менеджерами, пользуйтесь ими, и программными пакетами в их формате (apt/rpm/ebuild/..), и они сделают все необходимое за вас в лучшем виде! Если же windows...

    В не кастрированных (не домашние) версиях windows10 можно попытаться запустить бинарники ubuntu/debian, если не требуется gui, это почти наверняка будет работать, т.е. вы можете использовать штатный пакетный менеджер apt, ив пару команд установить/обновить все все необходимое

    Можете так же устанавливать python в тихом режиме, скачав установщик с сайта https://www.python.org/downloads/, это будет занимать меньше места, но в случае если вам нужны необычные модули, то вам может не повезти найти собранные под windows, да и те что есть, обычно требуют ручную установку.. в общем не все там легко автоматизируется, пути загрузок внезапно могут через год другой исчезнуть и пользователи получат проблему.

    Универсально, можете воспользоваться готовой linux подсистемой для windows - cygwin (на столько долгой и качественной поддержки почти всего из мира windows в linux вы не найдете), и таскайте в своем установщике их setup.exe (кстати он всегда доступен для загрузки с сайта по одному и тому же url) в режиме Unattended setup mode (--quiet-mode), вместе с питоном вы получите базовый набор утилит командной строки и кучу еще чего теоретически лишнего, но поверьте, оно не помешает, особенно если вам нужна автоматизация процессов управления установкой на машине клиента.
    Ответ написан
    Комментировать
  • Pygame прямоугольник для выделения юнитов?

    @rPman
    Прямоугольник для выделения юнитов это такой же юнит как и другие, ну почти ;) взаимодействие виртуальное, зная координаты прямоугольника и юнитов, можно вычислить какие находятся под ним и выделять их (на ваш выбор, либо добавляя на сцену для каждого еще юнит выделения либо менять свойство у юнитов - выделен и пусть они умеют менять внешний вид (показывающий что они выделены).
    Ответ написан
    Комментировать
  • Как создать простую нейронную сеть на TF, которая сможет управлять игрой через захват экрана?

    @rPman
    Судя по вопросам, боюсь вы поставили себе пока непосильную задачу.

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

    Затем вы должны очень хорошо закодировать (отдельными алгоритмами, собственно opencv для этого хорошо подходит) чтобы распознать объекты на экране (глупо для этого пользоваться нейронкой, точнее это ДОРОГО), в итоге у вас будет информация об игровом мире в вашем представлении, удобном для использования в вашей программе. И только потом начинайте думать, как использовать полученную информацию, стоит ли вообще все заводить на нейронные сети.

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

    geometry dash это обычный платформер, если я правильно понимаю там вообще одно действие - прыжок? Эта игра не требует нейронки от слова совсем, все действия рассчитываются простым анализом игрового мира (движения врагов рассчитываются за 3-4 кадра в коротком варианте либо заранее вы сами определяете что вот этот враг двигается по таким правилам) а дальше поиск по 'лабиринту' перебором или поиском в глубину.
    Ответ написан
    Комментировать
  • Какой протокол(технология) существует для remote mobile control?

    @rPman
    Вам так критично работать с удаленным управлением на низком уровне или лучше взять готовые инструменты? Что то типа crome/firefox desktop sharing (гуглите, названия разные, стандарт пришел с десктопа).

    Чуть более низкий уровень и достаточно старый протокол - vnc, библиотеки к нему есть наверное даже под чайники.

    Еще есть штатные инструменты разработчика, с помощью adb.
    Ответ написан
    Комментировать
  • Raspberry Pi + Python или STM32 - кто быстрее?

    @rPman
    Однозначно малинка будет быстрее, если вы конечно пакеты не по байтно будете вручную разбирать. Потому что сами данные будут передаваться нативными методами (порт uart будет файлом а значит в него будет просто сискол записи блока данных).
    Если у вас будет преобразование данных - то все зависит от этого преобразования и того как вы его реализуете, но даже в этом случае малинка зачастую будет на порядок быстрее, ведь там как минимум частота в 10 раз быстрее, 4 ядра вместо одного и т.п.
    Ответ написан
    Комментировать
  • Как оптимизировать прорисовку в pygame( Python)?

    @rPman
    Во первых, в подавляющем большинстве случаев, 99% работы программиста (отрисовки, организации игрового цикла и прочее) берет на себя игровой движок/фреймворк. Но вы молодцы, что пытаетесь, наверное, сделать все сами с нуля.

    У вас должен быть игровой цикл отрисовки игрового мира, и правильно организованный мир, который по возможности не должен зависеть вообще от того, успевает ли отрисовка или нет. Цикл отрисовки должен пытаться нарисовать следующий кадр, сделать какие то оптимизации для отрисовки следующего (бывают даже на несколько кадров вперед подготовку делают, сложно, иногда приходится лаги разрешить но увеличивает плавность графики), затем, если затраченное время оказалось меньше, отведенного для одного кадра (чтобы было 30/60fps или сколько хотите), ждет оставшееся время на паузе (отрабатывает игровой цикл для однопоточной реализации), и все повторяется.

    Не нагружайте процессор зря. За графику пусть отвечает видеокарта (соответствующие библиотеки и фреймворки), потому что пока вы рисуете друг над другом спрайты, копируя блоки оперативной памяти, видеокарта все это сделает параллельно, эффективно, и главное удобнее. Плюс видеоускоритель есть уже чуть ли не в холодильниках, т.е. в каждом современном процессоре - десктопы, мобильные, игровые приставки...

    p.s. не к вам лично, а вообще:
    бедный наш мир, лет 10-20 назад, gamedev решали вопросы уровня, как соптимизировать функцию деления чтобы метод прорисовки спрайта успевал отработать до возврата хода луча crt монитора... а сейчас задачи, с которых начинает программист - это какой конструктор/фреймворк выбрать и как его повернуть,/настроить чтобы на экране появились человечки и стали игрой, даже не попытавшись разобраться, как это работает внутри.
    Ответ написан
    1 комментарий