谷歌视觉框架分为两个

在我的自定义检测器中,我想将图像从帧分成两半,分别进行处理。 这是我在自定义Detector迄今所得到的结果:

 val imageArray = frame?.grayscaleImageData?.array() val upperImageBuffer = ByteBuffer .allocate(imageArray?.size ?: 0) .put(imageArray, 0, imageArray?.size?.div(2) ?: 0) val upperFrame = Frame.Builder(). setImageData(upperImageBuffer, frame?.metadata?.width ?: 0, frame?.metadata?.height?.div(2) ?: 0, frame?.metadata?.format ?: 16). setRotation(frame?.metadata?.rotation ?: 0). build() val lowerFrame... etc val upperDetections = delegateDetector.detect(upperFrame) upperDetections.forEach { key, barcode -> if (barcode is Barcode) results.append(key, barcode) } val lowerDetections = delegateDetector.detect(lowerFrame) etc. 

到目前为止,我在两者上都使用了相同的探测器(这实际上是为了检查我是否会在整个帧中识别更多的结果 – 就像听起来一样愚蠢,但是我留下了问题,因为也许有人未来将需要采取一个部分的图像由一个探测器处理,另一个由另一个处理)。

不过,问题是:我得到相同的结果两半,实际上是从原来的框架相同。 我做错了什么?

CameraSource的grayscaleImageData也包含颜色,但以灰度通道为前缀。 也就是说,它被格式化为YUV,而不仅仅是Y通道(灰度)。

因此,而不是使用imageArray.size,使用frame.width * frame.height作为大小。