Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Can';在使用Fritz进行物体检测时,我似乎无法理解错误_Android_Kotlin_Object Detection - Fatal编程技术网

Android Can';在使用Fritz进行物体检测时,我似乎无法理解错误

Android Can';在使用Fritz进行物体检测时,我似乎无法理解错误,android,kotlin,object-detection,Android,Kotlin,Object Detection,我需要解决收到的错误,并希望成功运行此活动 检测活动.kt package-name import ai.fritz.core.Fritz import ai.fritz.fritzvisionobjectmodel.FritzVisionObjectPredictor import ai.fritz.vision.inputs.FritzVisionImage import android.graphics.Bitmap import android.support.v7.app.AppCo

我需要解决收到的错误,并希望成功运行此活动

检测活动.kt

package-name

import ai.fritz.core.Fritz
import ai.fritz.fritzvisionobjectmodel.FritzVisionObjectPredictor
import ai.fritz.vision.inputs.FritzVisionImage
import android.graphics.Bitmap
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.renderscript.Allocation
import android.renderscript.Element
import android.renderscript.RenderScript
import android.renderscript.ScriptIntrinsicYuvToRGB
import kotlinx.android.synthetic.main.activity_detection.*

class DetectionActivity : AppCompatActivity() {

    private lateinit var renderScript: RenderScript
    private lateinit var yuvToRGB: ScriptIntrinsicYuvToRGB
    private var yuvDataLength: Int = 0
    private lateinit var allocationIn: Allocation
    private lateinit var allocationOut: Allocation
    private lateinit var bitmapOut: Bitmap

    private val itemMap by lazy {
        hashMapOf<String, Int>()
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        Fritz.configure(this, "Fritz-token-key")

        //val onDeviceModel = ObjectDetectionOnDeviceModel()
        //val objectPredictor = FritzVision.ObjectDetection.getPredictor(onDeviceModel)
        val objectPredictor = FritzVisionObjectPredictor.getInstance(this)
        var fritzVisionImage: FritzVisionImage

        cameraView.addFrameProcessor {

            if (yuvDataLength == 0) {
                //Run this only once
                initializeData()
            }

            //Camera Preview returns NV21, so convert it to Bitmap :
            //https://stackoverflow.com/a/43551798/5471095
            allocationIn.copyFrom(it.data)
            yuvToRGB.forEach(allocationOut)
            allocationOut.copyTo(bitmapOut)
            fritzVisionImage = FritzVisionImage.fromBitmap(bitmapOut, it.rotation)
            //val visionResult = objectPredictor.predict(fritzVisionImage)
            val visionObjects = objectPredictor.predict(fritzVisionImage)

            //Clear the existing map
            itemMap.clear()

            //Convert the list of objects detected into a Map so that we can track count of similar items
            //visionResult.visionObjects.forEach { visionObject ->
            visionObjects.forEach{ visionObject ->
                if (itemMap.containsKey(visionObject.visionLabel.text))
                    itemMap[visionObject.visionLabel.text] = itemMap[visionObject.visionLabel.text]!! + 1
                itemMap[visionObject.visionLabel.text] = 1
            }

            //Print the detected items on the screen
            runOnUiThread {
                tvDetectedItem.text = ""
                itemMap.forEach { map ->
                    tvDetectedItem.append("Detected ${map.value} ${map.key}\n")
                }
            }
        }
    }

    private fun initializeData() {
        yuvDataLength = cameraView.previewSize?.height!! * cameraView.previewSize?.width!! * 3 / 2
        renderScript = RenderScript.create(baseContext)
        yuvToRGB = ScriptIntrinsicYuvToRGB.create(renderScript, Element.U8_4(renderScript))
        allocationIn = Allocation.createSized(renderScript, Element.U8(renderScript), yuvDataLength)
        bitmapOut = Bitmap.createBitmap(cameraView.previewSize?.width!!, cameraView.previewSize?.height!!, Bitmap.Config.ARGB_8888)
        allocationOut = Allocation.createFromBitmap(renderScript, bitmapOut)
        yuvToRGB.setInput(allocationIn)
    }

    override fun onStart() {
        super.onStart()
        cameraView.start()
    }

    override fun onStop() {
        super.onStop()
        cameraView.stop()
    }
}
请告诉我这个问题,我怎样才能解决它??
请告诉我一个可行的解决办法,因为我已经试过了,但同样感到恼火。如果没有,我可以用什么来为我的project android应用程序添加对象检测功能,这样可以更好地使用免费资源等?请务必详细说明相同的步骤

这里是弗里茨的一位安卓工程师。看起来您使用的是我们的SDK的一个非常旧的版本。最新版本是5.1.1。我会尝试更新你的app/build.gradle依赖项以使用该依赖项,然后尝试以下说明:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.arca.DetectionActivity">

    <com.otaliastudios.cameraview.CameraView
            android:id="@+id/cameraView"
            android:keepScreenOn="true"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    <TextView
            android:layout_marginBottom="32dp"
            android:textSize="32sp"
            android:textStyle="bold"
            android:textColor="#B09954"
            android:id="@+id/tvDetectedItem"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center_horizontal" />
</FrameLayout>
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: pakage-name, PID: pid-number
    java.lang.NoSuchMethodError: No static method isInitialized(Landroid/content/Context;)Z in class Lai/fritz/core/Fritz; or its super classes (declaration of 'ai.fritz.core.Fritz' appears in /data/app/pakage-name-79eLdVK0LI_fYwGGKlCPVQ==/base.apk)
        at com.example.arca.DetectionActivity.onCreate(DetectionActivity.kt:35)
D/GetRequestTask: Api Request: https://api.fritz.ai/sdk/v1/session/settings