视觉API中的限制检测区域

16

看起来我已经深入了Google Vision API的条形码扫描中。或许是在查看各种替代库(ZBar,ZXing,甚至一些收费的第三方实现)后,我的思维有点混乱,但我很难找到任何关于如何实现某种扫描区域限制的信息。

用例非常简单:如果我是一个用户,将手机对准带有多个相同类型的条形码的盒子(在这里想到运输标签),我想明确地将屏幕上的一些小视图查找器或对齐直边指向精确地我想要捕捉的东西,而不必担心任何感兴趣区域以外的东西给我带来一些我不想要的扫描结果。

在我看到的大多数其他Android库中,以上情况都得到了处理,它们采用相对或绝对坐标的矩形,iOS也是如此,它使用相对CGRect,但概念基本相同。

我深入挖掘了条形码阅读器示例应用程序here,但除了高级别的实现细节之外,实现方式有点难以理解。

在相机的预览框架中成功检测到任何条形码后,似乎用一个丑陋的补丁在感兴趣区域以外的条形码上进行简单的无操作,因为设备仍在努力计算这些帧。

我是否在这个问题上错过了非常简单和明显的东西?否则,有没有实现这样干净的方法呢?

非常感谢您抽出时间阅读这篇文章!

1个回答

3
目前API没有限制检测区域的选项。但是在将预览图像传递到条形码检测器之前,您可以裁剪预览图像。请参阅此处以了解如何使用自己的类包装检测器的概述:Mobile Vision API - concatenate new detector object to continue frame processing。您需要实现“detect”方法来获取从相机接收的帧,创建帧的裁剪版本,并将其传递给底层检测器。

Google的“移动视觉”API是免费的吗?我需要用它来进行人脸检测。网站上没有定价信息,也没有直接联系支持的方式。 - techno
感谢您对此事的更新。很遗憾听到没有直接的实现来钩入这个,但我采纳了您的建议,并拥有了一个功能齐全的裁剪扫描区域版本。我有两个版本 - 一个是位图的真正裁剪,发送到检测客户端,另一个是在示例图形工厂的回调中简单地“Rect X是否包含Scanning Result Rect Y的顶点?” - Tiki McFee
2
@pm0733464,我正在开发OCR应用。我需要从区域Rect(0, 306 - 720, 489)中捕获文本,并忽略其余部分的图像。我尝试在ocr-reader应用程序中修改帧,即CameraSource中的mDetector.receiveFrame(f),但是无法检测到文本。请给一个能工作的示例。 - Preetam
3
@TikiMcFee你能将你的裁剪解决方案作为一个答案添加在这里吗?这将有所帮助,许多像我这样的人会喜欢。 - Snake
@Snake - 很抱歉这晚了5年,但我一直得到些许提示,有人在寻找此代码。对于你和其他人,我无法发布代码-它被锁定在企业应用程序解决方案中,而不是开源的。然而,基本上只需捕获照片,并以任何方式您可以使用实际的宽度/高度限制裁剪结果。您可以使用位图操作的操作系统内部功能或其他方式完成此操作。https://developer.android.com/reference/android/graphics/Bitmap 希望这是一个足够好的起点! - Tiki McFee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接