BarCode
DetectFace
检测条形码或人脸。但我有一个问题,当我使用内存泄漏
.
条形码
override fun onImageAvailable(reader: ImageReader) {
imageOnFrame = reader.acquireNextImage()
barcode = BarCode(this@MainActivity, imageOnFrame, getRotation("0"))
barcode!!.run()
barcode = null
imageOnFrame.close()
}
探测面
,这会导致内存泄漏:
override fun onImageAvailable(reader: ImageReader) {
imageOnFrame = reader.acquireNextImage()
detectFace = DetectFace(this@MainActivity, imageOnFrame, getRotation("0"))
detectFace!!.run()
detectFace = null
imageOnFrame.close()
}
这是课堂
:
class DetectFace(private val context: Context, private val image: Image, private val rotation: Int) {
private val option = FirebaseVisionFaceDetectorOptions.Builder()
.setModeType(FirebaseVisionFaceDetectorOptions.ACCURATE_MODE)
.setLandmarkType(FirebaseVisionFaceDetectorOptions.ALL_LANDMARKS)
.setClassificationType(FirebaseVisionFaceDetectorOptions.ALL_CLASSIFICATIONS)
.setTrackingEnabled(true)
.setMinFaceSize(0.01f)
.build()
fun run(){
val image = FirebaseVisionImage.fromMediaImage(this.image, rotation)
val detector = FirebaseVision.getInstance()
.getVisionFaceDetector(option)
detector.detectInImage(image)
.addOnSuccessListener {
// code ..
}
.addOnFailureListener{
// code ..
}
this.image.close()
}
}