android - 我们可以使用 android ML Kit Image Labeling 来检测产品吗
问题描述
我有客户的要求,我们需要在 cameraView 中检测我们的产品框。为此,我正在尝试使用 firebase ML Kit 对象检测。现在它可以检测门、沙发等一般物体。我希望能够检测到我的产品。有没有办法做到这一点?下面是我目前的实现
class DetectActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_detect)
cameraView.setLifecycleOwner(this)
cameraView.addFrameProcessor {
extractDataFromFrame(it) { result ->
tvDetectedItem.text = result
}
}
}
private fun extractDataFromFrame(frame: Frame, callback: (String) -> Unit) {
val options = FirebaseVisionObjectDetectorOptions.Builder()
.setDetectorMode(FirebaseVisionObjectDetectorOptions.STREAM_MODE)
.enableMultipleObjects()
.enableClassification() // Optional
.build()
val objectDetector = FirebaseVision.getInstance().getOnDeviceObjectDetector(options)
objectDetector.processImage(getVisionImageFromFrame(frame))
.addOnSuccessListener {
var result = ""
it.forEach { item ->
result += "${item.entityId}\n" //TODO : Get the knowledge graph result for this entity
Log.e("TAG",item.classificationCategory.toString())
}
callback(result)
}
.addOnFailureListener {
callback("Unable to detect an object")
}
.addOnCompleteListener {
}
}
private fun getVisionImageFromFrame(frame : Frame) : FirebaseVisionImage{
//ByteArray for the captured frame
val data = frame.data
//Metadata that gives more information on the image that is to be converted to FirebaseVisionImage
val imageMetaData = FirebaseVisionImageMetadata.Builder()
.setFormat(FirebaseVisionImageMetadata.IMAGE_FORMAT_NV21)
.setRotation(FirebaseVisionImageMetadata.ROTATION_90)
.setHeight(frame.size.height)
.setWidth(frame.size.width)
.build()
val image = FirebaseVisionImage.fromByteArray(data, imageMetaData)
return image
}
}
我也希望它完全脱机。为此,有设备 ML 套件实现。但是我该如何使用它呢?对不起,我的英语不好。
解决方案
首先,firebase ML Kit 对象检测已弃用且不再受支持。请迁移到独立的 ML Kit(请参阅迁移指南)。其次,为了您的目的,您可以使用自定义模型查看 ML Kit 的对象检测和跟踪(开发人员指南)。为了为您的产品训练您自己的图像分类模型,ML Kit 的自定义模型开发人员指南讨论了几种方法。祝你好运!
推荐阅读
- java - 我必须在此代码中添加什么才能满足关于回合制游戏的非常详细的要求?
- android - 在 Dialog 中放置一个 lottie 动画。安卓
- cassandra - 系统规格与 Cassandra 配置参数的关系
- node.js - 如何使用 mongoose 在 mongodb 中存储用户定义的(动态)日期和时间?
- web - 在 Odoo 网站生成器上无法使用 SSL/TLS
- c - “未找到多重引导标头”,内核最少
- android - 使用默认 Google 推荐时的版本冲突
- vuejs2 - Vee 验证 if/else 输入字段
- javascript - 正则表达式替换为 IE11/Edge 上的搜索参数引发 ReferenceError
- javascript - 我如何替换数据中的数据(JSRender)