opencv - 如何在 Unity 中识别非矩形图像?
问题描述
语境:
我正在尝试为移动设备创建一个 Unity 应用程序,该应用程序可以通过设备的物理摄像头识别汽车等大物体。
我正在查看 Wikiitude 和 Vuforia,但它们似乎都只适用于可以放在桌面上的小物体。除非我错过了什么?
我也在看 Open CV 和 ARCore,但它们似乎只适用于矩形“标记”。例如,汽车不是矩形的,尽管从相同角度看汽车的形状总是相同的,但背景和通过窗户看到的汽车后面的物体总是不同的,导致 AR 库尝试匹配不是矩形的像素汽车的一部分。
问题:
如何创建一个可以通过手机的物理摄像头识别大物体或非矩形图像的 Unity 应用程序?
解决方案
来自相机的图像不包含任何物体的比例 - 它只是一个像素阵列,从光检测设备(通常是 Cmos 传感器)捕获。应用程序无法知道物体是大还是小(至少在我们进入深度相机之前),因此识别图像的方法对于大物体和小物体是完全相同的。
就您问题的根源而言:根据图像识别对象是一个非常棘手的主题,只有当我们只教算法识别标记或 QRCode 时,它才会变得易于管理 - 这些是专门设计为易于识别的,那就是为什么有更多的图书馆在做这种事情。
Vuforia 尝试识别所有对象,这很神奇,并且不会关心对象的大小,因此您可以尝试使用它,这几乎就是简单的解决方案。
然而,这很可能只在相同的照明条件下工作,如果天气变化等,如果汽车脏了,湿了等等,就会失败。
一般情况下,比如接近人类识别物体的能力——目前还不可能,人类在识别汽车之前训练他们的神经网络多年。
有关更多信息,请阅读这个关于图像识别的信息非常丰富的线程(在这种情况下,可口可乐罐比一般的“汽车”简单得多)
这是一张图片,显示较大的东西在相机上看起来是一样的
推荐阅读
- python - 将函数链接到按钮小部件 tkinter 的命令标签
- makefile - 用 Swing 编译 CMU Pocketsphinx 的 makefile
- linux - 运行脚本跳过文件
- unit-testing - 在 Pony 中结束所有行为后运行函数/行为
- actionscript-3 - 尝试制作一个按钮,该按钮针对位于多层影片剪辑中的特定影片剪辑属性
- amazon-web-services - 我正在尝试在 cloudformation 中创建 ECS 服务,并且我想使用它创建的默认 VPC,并选择任何子网
- react-native - 以本机反应播放新视频时停止所有视频
- c - 将数据转换为 7 位而不是 C 中的 1 个字节
- terraform - 使用 Terraform 设置具有复制功能的 s3 存储桶
- python - 为 TensorFlow 预制估计器定义输入函数