二维码的方向角

Posted

技术标签:

【中文标题】二维码的方向角【英文标题】:Orientation corners of a QR-code 【发布时间】:2017-10-30 04:12:51 【问题描述】:

截至目前,当 android Vision 检测到 QR 码时,数组“Barcode.cornerPoints”(包含代码的角点)以看似随机的顺序填充。我需要确定 4 个角点中的哪 3 个包含“方位方块”。

我目前使用的方法很不满意:

    对于每个检测到的 QR 码,我不得不创建一个位图并尝试使用另一个库 (Zxing) 再次查找 QR 码,该库始终以一致的旋转顺序返回角点。

    1234563 /li>

我想要的是根据方向填充数组“Barcode.cornerPoints”。

举例说明:

cornerPoints[0] = //First corner-point with an orientation square
cornerPoints[1] = //Second corner-point with an orientation square
cornerPoints[2] = //Third corner-point with an orientation square
cornerPoints[3] = //The corner-point that does not contain a orientation square

> Like in this picture <

一段时间以来,我一直在尝试寻找一个巧妙的解决方法来解决这个问题,但我想不出任何好的解决方案,而且它没有出现,因为谷歌已经开源了填充时使用的代码qrCorners 数组,所以我无法扩展它...

有什么帮助吗?我不是唯一一个一直在寻找解决此问题的方法的人:

https://github.com/googlesamples/android-vision/issues/103

【问题讨论】:

为什么需要方向方块?我的猜测是Vision API 用于获取条形码的内容而不是特征检测。你看过 OpenCV 吗? 1) 我需要知道二维码相对于周围环境的方向,因为在阅读完代码后,我会在二维码右侧进行一些裁剪和图像编辑。如果不知道角的方向,就不可能知道二维码右侧是哪个区域。 2) 也许吧,但 Android Vision 完美地满足了我的所有需求,除了cornerPoints 数组的任意数量。如果它们只是一致地填充阵列,则二维码可以在许多应用程序中用作方向锚。 3) 不,我还没有仔细研究过 OpenCV 【参考方案1】:

我也有类似的情况。可能对您有所帮助的是 Android Vision 不会返回 corner points in a completely random order。

我相信检测器会从框架的左上角到右下角扫描图像。在图像中首先检测到的 QR 码角将作为角 0 返回,其余按顺时针方向返回。

如果 Android Vision 像您所说的那样以“静态”顺序返回角落,这将非常有用,具体取决于方向。我几乎看不到任何理由选择返回角点的方式。也许更好的表现?对于要读取的 QR 码,必须根据由 QR 码的角确定的特定方向来完成。这意味着 Android Vision 已经确定了方向和角,但没有向我们提供这些信息。 也许这可以在以后的更新中添加?

【讨论】:

以上是关于二维码的方向角的主要内容,如果未能解决你的问题,请参考以下文章

unity3d 欧拉角怎么转换为方向向量

获取二维数组的“角”

凸包总结

亚像素角点

关于DP与DFS

同角三角函数式的化简