Запуск Python скриптов в активности класса Java в Android Studio с Chaquopy - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь использовать некоторые python скрипты в Android приложении (Java). Я настроил Chaquopy, следуя инструкциям на их веб-сайте. https://chaquo.com/chaquopy/doc/current/android.html

Я нашел пример того, как выполнять python сценарии в kotlin приложении https://www.ericdecanini.com/2019/10/21/run-python-scripts-in-the-android-front-end-with-chaquopy/, но я изо всех сил пытаюсь понять это out in Java.

Если я правильно понимаю, сценарий python (.py) хранится в src / main / python, и можно вызвать этот сценарий из другого действия и отобразить результаты в та же самая вызывающая активность.

Пример в kotlin:

val python = Python.getInstance()
val pythonFile = python.getModule("helloworldscript")
val helloWorldString = pythonFile.callAttr("helloworld")
hello_textview.text = helloWorldString.toString()

Я хочу выполнить следующий python скрипт:

import os
import face_recognition
def cmd2():
    os.system("face_recognition ./event_faces/ ./event_images/")

Этот инструмент командной строки from face_recognition позволяет пользователю запускать распознавание лиц в каталоге изображений и сравнивать их с каталогом известных лиц. Результатом является распечатка обработанных файлов с любыми известными или неизвестными лицами, добавленными к имени файла. enter image description here

My Goal is to execute this python script and display the output in the activity (i.e textView) Does anyone know if it is possible to use face_recognition in Android Studio with Chaquopy? It is not listed so I am having some doubts https://chaquo.com/pypi-7.0/ Можно ли сделать os. введите вызовы в приложении android?

ДОПОЛНИТЕЛЬНО Если кто-нибудь знает способ выполнить распознавание лиц в каталоге изображений в Java без использования python face_recognition, дайте мне знать. Я пытался найти такую ​​библиотеку, как face_recognition, для java, но безуспешно. Библиотека face_recognition из Python очень хорошо работает для меня, но теперь, когда я пытаюсь перенести свои сценарии python в проект Android Studio, все становится немного сложно.

Таким образом, мой код far: Android Manifest

 <application
        android:name="com.chaquo.python.android.PyApplication"

app Gradle

apply plugin: 'com.android.application'
apply plugin: 'com.chaquo.python'

android {
    compileSdkVersion 29

    defaultConfig {
        python{
            staticProxy "bulk.py"
            pip{
                install "dlib"
                install "opencv-python"
                install "opencv-contrib-python"
                install "face_recognition"
                install "pillow"
                install "numpy"
                install "cv2"
                install "os"
            }
        }
        applicationId "com.projectdevelopment.faces"
        minSdkVersion 16
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        ndk {
            abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
        }
    }

project gradle

buildscript {
    repositories {
        google()
        jcenter()
        maven { url "https://chaquo.com/maven" }

    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.0.0"
        classpath 'com.google.gms:google-services:4.3.3'
        classpath "com.chaquo.python:gradle:8.0.0"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

Действие, выполняющее Python скрипт

python.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //call python script and return output to this activity
            }
        });

Заранее благодарим за любой вклад. Это очень ценно.

1 Ответ

1 голос
/ 14 июля 2020

Я слышал от многих людей, которые успешно использовали face_recognition на Android. Это чистый Python пакет, поэтому он может быть установлен непосредственно из PyPI и не должен находиться в собственном репозитории пакетов Chaquopy .

Однако Chaquopy не поставляется с исполняемый файл Python, поэтому запуск сценария командной строки с os.system вряд ли сработает. Вместо этого вы можете просто вызвать face_recognition Python API, у которого есть множество примеров на собственном веб-сайте .

Похоже, что ближайшим эквивалентом выполнения сценария face_recognition является для импорта face_recognition.face_recognition_cli и вызова функции main, возможно, после настройки sys.argv в командной строке.

Любой текст, выводимый на стандартный вывод, будет от go до Logcat , который вы можете просмотреть в Android Studio. Если вы хотите также видеть его на экране устройства, проще всего адаптировать шаблон консольного приложения .

...