我正在为 Android 开发一个增强现实应用程序,它使用手机的摄像头来识别魔方每个面上彩色方 block 的排列。
我不确定的一件事是我将如何准确地检测和识别立方体每个面上的彩色方 block 。如果您查看魔方,您会发现每个方 block 都是六种可能颜色中的一种,带有黑色细边框。这让我认为检测正方形应该相对简单,可以使用现有的标记检测 API。
我的问题是,这里有人有过图像识别和 Android 方面的经验吗?理想情况下,我希望能够实现现有 API,但如果有人能为我指明正确的入门方向,那么从头开始做这将是一个有趣的项目。
非常感谢。
最佳答案
你想把相机对准一个立方体,让它理解配置吗?
识别照片中的对象是一个开放的 AI 问题。因此,您需要对问题进行相当多的限制才能对其产生任何吸引力。我建议从以下内容开始:
立方体将从恰好 12 英寸的距离拍摄,相机正后方有一个 100W 的光源。立方体将沿对角线放置,因此它恰好呈现 3 个面,中间有一个角。相机的位置将使其直接聚焦在中心的立方体角上。
将拍摄一张照片。然后立方体将垂直和水平旋转 180 度,以便其他三个面可见。将拍摄第二张照片。由于您确切地知道每张脸的预期位置,因此从每个区域抓取几个像素,并假设这是该方 block 的颜色。请记住,立方体通常会被打乱,而不是像此处图片所示那样均匀。所以你总是要看 9*6 = 54 个小方 block 才能得到每个小方 block 的颜色。
这两张图片中的信息定义了多维数据集配置。生成相同配置的立方体图像,并允许用户确认或更正。
拍摄 6 张照片可能更简单 - 每张脸一张,然后以明确定义的顺序绕着这些脸移动。请记住,每个面的中心方 block 都不会移动,并为该面定义正确的颜色。
完成配置后,您可以使用 OpenGL 操作来旋转立方体切片。这将是一个包含数百行代码的程序,用于定义和旋转立方体,以及您为图像识别所做的一切。
关于android - Marker Recognition on Android(识别魔方),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2390400/