我正在开发一款适用于
Android的增强现实应用程序,它使用手机的相机识别魔方的每个面上的彩色方块的排列.
我不确定的一件事是我将如何检测和识别立方体每个面上的彩色方块.如果你看一下魔方,你可以看到每个方格都是六种颜色中的一种,带有黑色的薄边框.这让我认为应该相对简单地检测一个正方形,可能使用现有的标记检测API.
我的问题是,这里有没有人有图像识别和Android的经验?理想情况下,我希望能够实现和现有的API,但如果有人能指出我正确的方向开始,这将是一个有趣的项目从头开始.
提前谢谢了.
解决方法
您想将相机对准立方体,让它了解配置吗?
识别照片中的物体是一个开放的AI问题.因此,您需要对问题进行相当多的约束才能获得任何牵引力.我建议从以下内容开始:
>立方体将从正好12英寸的距离拍摄,100W光源直接在相机后面拍摄.立方体将对角设置,因此它正好呈现3个面,中间有一个角.将相机定位,使其直接聚焦在中心的立方角上.
>将拍摄一张照片.然后立方体将垂直和水平旋转180度,以便其他三个面可见.将拍摄第二张照片.由于您确切知道每个面的预期位置,因此从每个区域抓取几个像素,并假设该面是该正方形的颜色.请记住,立方体通常会被扰乱,而不是如图所示.所以你总是要看9 * 6 = 54个小方块才能得到每个方块的颜色.
>这两张图片中的信息定义了立方体配置.以相同配置生成多维数据集的映像,并允许用户确认或更正它.
拍摄6张照片可能更简单 – 每张照片中的一张,并以明确的顺序在脸部周围旅行.请记住,每个面的中心方块不会移动,并为该面定义正确的颜色.
完成配置后,可以使用OpenGL操作旋转立方体切片.这将是一个包含数百行代码的程序,用于定义和旋转立方体,以及您为图像识别所做的任何事情.