[Настройка Linux, *nix, Разработка под Android, Разработка под Linux] Разработка приложения с использованием Python и OpenCV на Android устройстве
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В это статье я хочу показать пример того, как андроид устройство можно использовать для разработки на таких языках программирования как 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. В данной статье будет рассмотрен способ подключения с использованием логина и пароля, для этого необходимо узнать имя текущего пользователя и задать пароль:
$ whoami
u0_a137
$ passwd
По умолчанию openssh прослушивает порт 8022, узнать ip адрес устройства можно с помощью команды ifconfig:
$ ifconfig
wlan0: 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.yaml
bind-addr: 127.0.0.1:8080
auth: password
password: 4a40bd9973dae545b3b4c037
cert: 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
SPL
При первом открытии будет предложено установить расширение Python — соглашаемся.
Установим приложение для потоковой передачи с камеры устройства, например IP Webcam. Главное требование к приложению — возможность транслировать с камеры поток понятный opencv, например rtsp. Разрешение видео потока настраиваем в зависимости от производительности устройства. На моем самое оптимальное 1280x720.
Запускаем трансляцию видео в IP Webcam и проект:
В заключение хочу отметить, что при наличии современного Android устройства его можно использовать как альтернативу raspberry pi. Так, например, сняв ограничения энергопотребления домашний планшет можно использовать как полноценный arm64 мини пк, работающий в фоне постоянно. При этом производительность у Termux вполне высокая.
Сравнение запуска того же кода на Raspberry pi 3
SPL
Разрешение видео 1280x720
Извините, данный ресурс не поддреживается. :(
Далее несколько дополнений которые не вошли в основную статью
Память устройства
SPL
Для того чтобы иметь возможность обмениваться файлами между termux и android необходимо в выполнить команду
$ termux-setup-storage
Теперь локальная память устройства примонтирована в ~/storage
.Net Core
SPL
Присутствует возможность компилировать приложения .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/dotnet
tar -zxf dotnet-sdk-3.1.403-linux-arm64.tar.gz -C /usr/share/dotnet
ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
dotnet new console -o app
cd app
dotnet run
Тестируем производительность с помощью sysbench
SPL
В sourses.list добавляем
deb ftp.debian.org/debian buster-backports main
apt-get update
apt install sysbench
sysbench --test=cpu --cpu-max-prime=20000 --num-threads=4 run
===========
Источник:
habr.com
===========
Похожие новости:
- [Python, ERP-системы] ERP на сервисной архитектуре
- [Python, Программирование] Каверзные вопросы по Python
- [Разработка под iOS, Swift, Разработка под MacOS, Разработка под Linux] Confusing extensions in Swift
- [Разработка под MacOS, Разработка под Linux, Разработка под Windows, Визуальное программирование] Фреймворки и библиотеки для кроссплатформенной разработки десктопных программ
- [.NET, Интерфейсы, Разработка под MacOS, Разработка под Linux, Разработка под Windows] Эволюция Material Design для AvaloniaUI
- [Программирование, Разработка под Android] DIP vs IoC vs DI в мире Android
- [Информационная безопасность, IT-инфраструктура] Смартфоны Nokia 1.3, Nokia 2.4 и Nokia 5.3 совместимы с EMM SafePhone
- [Python, Анализ и проектирование систем, NoSQL, API] Рейт лимиты с помощью Python и Redis (перевод)
- [Программирование, Разработка под MacOS, Разработка под Linux, Разработка под Windows] Фреймворки для кроссплатформенной разработки десктопных программ с GUI
- [Python] Разбираемся с доступом к атрибутам в Python (перевод)
Теги для поиска: #_nastrojka_linux (Настройка Linux), #_*nix, #_razrabotka_pod_android (Разработка под Android), #_razrabotka_pod_linux (Разработка под Linux), #_termux, #_android, #_vscode, #_codeserver, #_python, #_opencv, #_nastrojka_linux (
Настройка Linux
), #_*nix, #_razrabotka_pod_android (
Разработка под Android
), #_razrabotka_pod_linux (
Разработка под Linux
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 00:10
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В это статье я хочу показать пример того, как андроид устройство можно использовать для разработки на таких языках программирования как 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. В данной статье будет рассмотрен способ подключения с использованием логина и пароля, для этого необходимо узнать имя текущего пользователя и задать пароль: $ whoami
u0_a137 $ passwd По умолчанию openssh прослушивает порт 8022, узнать ip адрес устройства можно с помощью команды ifconfig: $ ifconfig
wlan0: 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.yaml
bind-addr: 127.0.0.1:8080 auth: password password: 4a40bd9973dae545b3b4c037 cert: 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-serverSPLПри первом открытии будет предложено установить расширение Python — соглашаемся. Установим приложение для потоковой передачи с камеры устройства, например IP Webcam. Главное требование к приложению — возможность транслировать с камеры поток понятный opencv, например rtsp. Разрешение видео потока настраиваем в зависимости от производительности устройства. На моем самое оптимальное 1280x720. Запускаем трансляцию видео в IP Webcam и проект: В заключение хочу отметить, что при наличии современного Android устройства его можно использовать как альтернативу raspberry pi. Так, например, сняв ограничения энергопотребления домашний планшет можно использовать как полноценный arm64 мини пк, работающий в фоне постоянно. При этом производительность у Termux вполне высокая. Сравнение запуска того же кода на Raspberry pi 3SPLРазрешение видео 1280x720
Извините, данный ресурс не поддреживается. :( Далее несколько дополнений которые не вошли в основную статью Память устройстваSPLДля того чтобы иметь возможность обмениваться файлами между termux и android необходимо в выполнить команду
$ termux-setup-storage
Теперь локальная память устройства примонтирована в ~/storage .Net CoreSPLПрисутствует возможность компилировать приложения .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/dotnet
tar -zxf dotnet-sdk-3.1.403-linux-arm64.tar.gz -C /usr/share/dotnet ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet dotnet new console -o app cd app dotnet run Тестируем производительность с помощью sysbenchSPLВ sourses.list добавляем
deb ftp.debian.org/debian buster-backports main apt-get update
apt install sysbench sysbench --test=cpu --cpu-max-prime=20000 --num-threads=4 run =========== Источник: habr.com =========== Похожие новости:
Настройка Linux ), #_*nix, #_razrabotka_pod_android ( Разработка под Android ), #_razrabotka_pod_linux ( Разработка под Linux ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 00:10
Часовой пояс: UTC + 5