Python 中的增强现实 (AR)

2025年3月17日 | 阅读 3 分钟

AR(增强现实)是一种将真实世界和虚拟世界相结合的系统。你玩过“Pokemon Go”吗?如果你不了解这款游戏,玩家需要打开相机,四处走动,在应用的控制台中随机放置在虚拟真实世界中的 3D 口袋妖怪。收集最多口袋妖怪的玩家获胜。玩家能够在游戏中的真实世界中看到虚拟卡通人物的概念就是 AR(增强现实)。

该游戏使用位置跟踪和地理映射,并在 AR 技术上运行。它创建了真实世界中虚拟对象的视图。还有一项技术称为“虚拟现实”。AR 和 VR 并不相同。虚拟现实是“虚拟世界被现实化”,而增强现实是将虚拟对象与真实世界相结合。VR 大约 75% 是虚拟的,而 AR 只有 25% 是虚拟的

通过例子可以很好地理解 AR 和 VR 之间的区别。玩 VR 头显游戏会让玩家沉浸在虚拟世界中,而玩 AR 游戏则会将虚拟世界融入到真实世界的地点。

AR 技术有两个主要目标:

  1. 实时交互
  2. 真实和虚拟对象的精确 3D 表示。

本教程将通过 Python 的 OpenCV 库简要介绍 AR。利用 Python 中可用的功能,我们将尝试实现一些有趣的 AR 创意。

计算机如何读取图像?

计算机本身不具备识别图像的能力。图像是由像素或图片元素组成的。当我们说“我的电视分辨率是 1080p”时,我们的意思是屏幕的宽高比是 3840*2160,这意味着电视屏幕有超过 800 万个像素。像素就像一个约 0.26 毫米或 1/96 英寸(不同)的小点。计算机只能识别数字。因此,每个像素都使用不同的颜色模型表示。最常用的颜色模型是RGB(红绿蓝)和 CMYK(青洋红黄黑)

RGB 模型

  1. 要表示黑白图像,每个像素会被赋予一个代表光照量(对比度)的数字。数字范围从 0 到 255。0 表示无光(黑色),255 表示全光(白色),区间内的数字表示各种深浅的灰色。
  2. 要在 RGB 模型中表示彩色图像,每个像素会被赋予3 个值,分别代表像素中红、绿、蓝的含量。
Augmented Reality (AR) in Python

使用 OpenCV 库处理图像

在 Python 庞大的库中,OpenCV 是其中一个值得注意的库。它是一个庞大的开源库,广泛用于计算机视觉和机器学习应用。使用这个库,我们可以处理图像甚至视频。要处理图像,每个像素都存储为 (B, G, R) 值的元组。

OpenCV 中有各种用于处理图像的函数。以下是一些基本函数:

输出

The picture we're working on:

Augmented Reality (AR) in Python

Height: 621
Width: 500
Number of channels: 3

No-of blue channels: 12
No-of green channels: 12
No-of red channels: 12

Selecting a region in the image:

Augmented Reality (AR) in Python

Resizing the image to half by maintaining the aspect ratio:

Augmented Reality (AR) in Python

Rotating the image by 60 degree clockwise:

Augmented Reality (AR) in Python