Русский
Русский
English
Статистика
Реклама

Разработка приложения с использованием Python и OpenCV на Android устройстве


В это статье я хочу показать пример того, как андроид устройство можно использовать для разработки на таких языках программирования как python с библиотекой opencv в среде VSCode (будет использован code-server). В конце статьи приведено небольшое сравнение производительности Termux на моем Android устройстве и Raspberry Pi 3B.

Все действия описанные статье выполнялись на:
Huawei MediaPad M5 10.8
4GB ОЗУ, Hisilicon Kirin 960s, EMUI 9, без root

Для начала понадобится установить Termux (эмулятор терминала, предоставляющий возможности среды Linux), о придожении уже писали на habr.

Далее установим необходимые пакеты, а так же, для более быстрой настройки в дальнейшем, установим ssh сервер:
$ pkg update -y pkg install curl openssh autossh termux-services screen$ sv-enable sshd$ sv up sshd

Теперь можно воспользоваться более удобным для ввода устройством и выполнять действия по ssh. В данной статье будет рассмотрен способ подключения с использованием логина и пароля, для этого необходимо узнать имя текущего пользователя и задать пароль:
$ whoamiu0_a137$ passwd

По умолчанию openssh прослушивает порт 8022, узнать ip адрес устройства можно с помощью команды ifconfig:
$ ifconfigwlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500         inet 192.168.1.88  netmask 255.255.255.0  broadcast 192.168.1.255

Подключаемся к Termux:
$ ssh u0_a137@192.168.1.88 -p 8022 

Установить opencv-python в собственном окружении Termux мне не удалось, поэтому воспользуемся трудами Andronix и запустим в Termux Ubuntu 18.04.
$ curl https://raw.githubusercontent.com/AndronixApp/AndronixOrigin/master/Installer/Ubuntu/ubuntu.sh | bash

В официальном приложением Andronix можно найти команды для установки других дистрибутивов таких как Kali, Manjaro и т.д.
Если все выполнилось успешно на экране появится
You can now launch Ubuntu with the ./start-ubuntu.sh script

Запускаем Ubuntu
$ ./start-ubuntu.sh 

Установим пакеты необходимые для разработки на python3 с использованием opencv:
$ apt update$ apt install curl git net-tools unzip yarn nano nodejs python3-dev python3-pip python3-opencv -y

Установка занимает довольно много времени.
Теперь установим code-server
$ curl -fsSL https://code-server.dev/install.sh | sh

После установки code-server необходимо отредактировать файл конфигурации
$ nano ~/.config/code-server/config.yamlbind-addr: 127.0.0.1:8080auth: passwordpassword: 4a40bd9973dae545b3b4c037cert: false

По умолчанию code-server прослушивает адрес 127.0.0.1:8080, для обращения к code-server с других устройств необходимо поменять bind-addr на 0.0.0.0:8080. Присутствует возможность авторизации по паролю. Для задания пароля необходимо изменить значение password. Для отключения авторизации необходимо указать auth: none.

Все действия в статье выполняются в Ubuntu без графического интерфейса в результате чего нет возможности использовать imshow, но есть способ транслировать видео в браузер используя библиотеку flask и специальный MIME тип multipart.

Чтобы не отвлекаться на написание кода, используемого в статье для примера, его можно взять в моем github репозитории.
$ git clone https://github.com/guinmoon/flask_opencv_sample$ cd flask_opencv_sample && pip3 install flask

Открываем проект в code-server

При первом открытии будет предложено установить расширение Python соглашаемся.
Установим приложение для потоковой передачи с камеры устройства, например IP Webcam. Главное требование к приложению возможность транслировать с камеры поток понятный opencv, например rtsp. Разрешение видео потока настраиваем в зависимости от производительности устройства. На моем самое оптимальное 1280x720.


Запускаем трансляцию видео в IP Webcam и проект:


В заключение хочу отметить, что при наличии современного Android устройства его можно использовать как альтернативу raspberry pi. Так, например, сняв ограничения энергопотребления домашний планшет можно использовать как полноценный arm64 мини пк, работающий в фоне постоянно. При этом производительность у Termux вполне высокая.
Сравнение запуска того же кода на Raspberry pi 3
Разрешение видео 1280x720


Далее несколько дополнений которые не вошли в основную статью

Память устройства
Для того чтобы иметь возможность обмениваться файлами между termux и android необходимо в выполнить команду
$ termux-setup-storage

Теперь локальная память устройства примонтирована в ~/storage

.Net Core
Присутствует возможность компилировать приложения .net-core, но к сожалению без возможности отладки так как нет версии OmniSharp скомпилированной под arm.
в start_ubuntu.sh
ищем строчку
command+=" -b /data/data/com.termux/files/home:/root"
и исправляем ее на
command+=" -b /data/data/com.termux/files/home"
curl -SL -o dotnet-sdk-3.1.403-linux-arm64.tar.gz https://download.visualstudio.microsoft.com/download/pr/7a027d45-b442-4cc5-91e5-e5ea210ffc75/68c891aaae18468a25803ff7c105cf18/dotnet-sdk-3.1.403-linux-arm64.tar

если ссылка не работает то руками качаем от сюда

mkdir -p /usr/share/dotnettar -zxf dotnet-sdk-3.1.403-linux-arm64.tar.gz -C /usr/share/dotnetln -s /usr/share/dotnet/dotnet /usr/bin/dotnetdotnet new console -o appcd appdotnet run


Тестируем производительность с помощью sysbench
В sourses.list добавляем
deb ftp.debian.org/debian buster-backports main
apt-get updateapt install sysbenchsysbench --test=cpu --cpu-max-prime=20000 --num-threads=4 run

Источник: habr.com
К списку статей
Опубликовано: 18.11.2020 22:19:29
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Настройка linux

*nix

Разработка под android

Разработка под linux

Termux

Android

Vscode

Code-server

Python

Opencv

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru