小编R.C*_*der的帖子

Android Studio Kotlin 编译器错误 node.sym 不能为空

突然,我的 android studio gradle 构建失败,出现未知错误:

java.lang.IllegalStateException: failed to analyze: com.sun.tools.javac.util.ClientCodeException: java.lang.IllegalStateException: node.sym must not be null
Run Code Online (Sandbox Code Playgroud)

我尝试了一切,例如将我的项目恢复到以前的版本并使缓存无效并重新启动,但错误仍然存​​在我真的不知道发生了什么:

这是我的毕业证书:

ext {
    configuration = [
            compileVersion: 27,
            minSdk        : 14,
            targetSdk     : 25,
            version_code  : 5,
            version_name  : "1.0.0"
    ]

    libraries = [
            supportVersion: '1.0.0-beta01'
    ]
}
buildscript {
    ext.kotlin_version = '1.3.50'

    repositories {
        google()
        jcenter()
        maven {
            url 'https://maven.fabric.io/public'
        }
    }
    dependencies {

        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath 'com.google.gms:google-services:4.2.0'
        classpath "io.realm:realm-gradle-plugin:6.0.1"
        classpath 'io.fabric.tools:gradle:1.27.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

//        classpath "com.android.tools.build:gradle:${buildConfig.gradlePlugin}"

        // NOTE: Do not place …
Run Code Online (Sandbox Code Playgroud)

android gradle kotlin android-studio build.gradle

14
推荐指数
2
解决办法
2707
查看次数

开放式简历人脸识别不准确

在我的应用程序中,我尝试使用Open CV在特定图像上进行人脸识别,这里我首先训练一个图像,然后在训练该图像后,如果我在该图像上进行人脸识别,则它成功地识别出该训练过的人脸。但是,当我转向同一个人的另一张照片时,识别不起作用。它仅适用于经过训练的图像,所以我的问题是如何纠正它?

更新:我要做的是用户应该从存储中选择一个人的图像,然后在训练了所选图像之后,我想从存储中获取与我训练过的图像相匹配的所有图像。

这是我的活动课:

public class MainActivity extends AppCompatActivity {
    private Mat rgba,gray;
    private CascadeClassifier classifier;
    private MatOfRect faces;
    private ArrayList<Mat> images;
    private ArrayList<String> imagesLabels;
    private Storage local;
    ImageView mimage;
    Button prev,next;
    ArrayList<Integer> imgs;
    private int label[] = new int[1];
    private double predict[] = new double[1];
    Integer pos = 0;
    private String[] uniqueLabels;
    FaceRecognizer recognize;
    private boolean trainfaces() {
        if(images.isEmpty())
            return false;
        List<Mat> imagesMatrix = new ArrayList<>();
        for (int i = 0; i < images.size(); i++)
            imagesMatrix.add(images.get(i));
        Set<String> uniqueLabelsSet = …
Run Code Online (Sandbox Code Playgroud)

java android opencv face-recognition

13
推荐指数
1
解决办法
356
查看次数

如何减小 Tflite 模型的大小或以编程方式下载和设置?

好的,所以在我的应用程序中,我尝试使用人脸网络模型实现人脸识别,该模型转换为 tflite 平均约为 93 MB,但是该模型最终会增加我的 apk 的大小。所以我正在努力寻找替代方法来处理这个问题

首先我能想到的是以某种方式压缩它,然后在安装应用程序时解压缩

另一种方法是我应该将该模型上传到服务器,并在下载后将其加载到我的应用程序中。但是我似乎不知道如何实现这一点:

默认情况下,face net 允许从 assets 文件夹中实现

 var facenet = FaceNet(getAssets());
Run Code Online (Sandbox Code Playgroud)

但是,如果我正在下载该模型,如何将其加载到我的应用程序中?

这是我的脸网初始化代码:

  public FaceNet(AssetManager assetManager) throws IOException {
        tfliteModel = loadModelFile(assetManager);
        tflite = new Interpreter(tfliteModel, tfliteOptions);
        imgData = ByteBuffer.allocateDirect(
                BATCH_SIZE
                        * IMAGE_HEIGHT
                        * IMAGE_WIDTH
                        * NUM_CHANNELS
                        * NUM_BYTES_PER_CHANNEL);
        imgData.order(ByteOrder.nativeOrder());
    }   


private MappedByteBuffer loadModelFile(AssetManager assetManager) throws IOException {
            AssetFileDescriptor fileDescriptor = assetManager.openFd(MODEL_PATH);
            FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor());
            FileChannel fileChannel = inputStream.getChannel();
            long startOffset = fileDescriptor.getStartOffset();
            long declaredLength = fileDescriptor.getDeclaredLength();
            return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength); …
Run Code Online (Sandbox Code Playgroud)

java android assets kotlin tensorflow-lite

6
推荐指数
1
解决办法
1030
查看次数

Kotlin 协程运行阻塞未按预期工作并且无法阻止 for 循环的执行

在我的应用程序中,我正在执行两个 for 循环,但是这些 for 循环需要按顺序安排,这里是用例:

有两个 for 循环: 1- ImageStickerslist 2-TextStickerslist

我想要做的是在 imagestickerslist 之后,如果正确完成,那么 textstickerslist 才会被执行。

这里的 imagesticker 列表由 url 路径组成,用于从 glide 加载图像,但是如果这些图像具有高分辨率,即使图像尚未从 url 加载,它最终也会使线程继续。为了解决这个问题,尝试添加阻塞调用以在ready和full方法上滑动,但事实证明它没有任何帮助。我很困惑阻塞调用是如何工作的,任何帮助都会非常感激。

这是我执行 for 循环的代码:

 runBlocking {
                            launch {
                                imagestickers.forEach {
                                    runBlocking {
                                        var image = it.path
                                        var x = it.x
                                        var y = it.y
                                        image!!.log()
                                        setimagestickers(image!!, x!!, y!!, it.width!!, it.height!!)
                                    }
                                }
                            }.join()
                            textstickers.forEach {
                                runBlocking {
                                    var text = it.text.toString()
                                    var color = it.color
                                    var font = it.font
                                    var size = it.size
                                    var x = …
Run Code Online (Sandbox Code Playgroud)

kotlin kotlin-coroutines

2
推荐指数
1
解决办法
3760
查看次数