我正在尝试在 Android 应用程序(Java)中使用一些 python 脚本。我已经按照他们网站上的说明配置了 Chaquopy。 https://chaquo.com/chaquopy/doc/current/android.html
我找到了一个如何在 kotlin 应用程序中执行 python 脚本的示例https://www.ericdecanini.com/2019/10/21/run-python-scripts-in-the-android-front-end-with-chaquopy / 但我正在努力用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/")
face_recognition 中的这个命令行工具允许用户在图像目录上运行面部识别,并将它们与已知人脸目录进行比较。结果是处理的文件的打印输出,其中任何已知或未知的面都附加到文件名。
我的目标是执行这个 python 脚本并在活动中显示输出(即 textView)有谁知道是否可以在带有 Chaquopy 的 Android Studio 中使用 face_recognition?它没有列出,所以我有一些疑问https://chaquo.com/pypi-7.0/ 是否可以制作 os. 在android应用程序中键入调用?
另外,如果有人知道在不使用 python 的face_recognition 的情况下在 Java 中的图像目录上执行面部识别的方法,请告诉我。我试图为 java 找到一个像 face_recognition 这样的库,但没有成功。Python 的 face_recognition 库对我来说一直运行良好,但现在当我试图将我的 python 脚本移植到 Android Studio 项目中时,事情变得有点棘手。
到目前为止我的代码:Android Manifest
<application
android:name="com.chaquo.python.android.PyApplication"
应用 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"
}
}
项目等级
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
}
});
提前感谢您的任何意见。非常感谢。