跳转到主要内容

Apriltags库的Python绑定

项目描述

pyapriltags: Apriltags库的Python绑定

这些是AprilRobotics开发的Apriltags 3库的Python绑定。受Apriltags2绑定(由Matt Zucker开发)的启发。从dt-apriltags分支。

原始库以BSD 2-Clause许可证发布。

安装

简单方式

您可以使用pip(对于Python 3,请使用pip3)进行安装

pip install pyapriltags

如果您想安装特定版本,可以像这样添加

pip install pyapriltags@v3.3.0

自行构建

克隆此存储库并在其中导航。然后初始化Apriltags子模块

$ git submodule init
$ git submodule update

构建Apriltags C库并将新构建的库嵌入到pip wheel中。

$ make build

新wheel将位于dist/目录中。现在您可以安装wheel

pip install pyapriltags-VERSION-py3-none-ARCH.whl

注意:根据此库的当前VERSION、您的操作系统以及您的CPU架构ARCH,上述文件名可能不同。

发布wheel

dist/内部构建的所有wheel都可以通过运行以下命令发布(推送到Pypi.org)

make upload

发布全部

使用以下命令为Python 3和CPU架构amd64aarch64arm32v7构建和发布wheel。

make release-all

用法

一些用法示例可以在test.py文件中看到。Detector类是Apriltags功能的包装器。您可以按以下方式初始化它

at_detector = Detector(searchpath=['apriltags'],
                       families='tag36h11',
                       nthreads=1,
                       quad_decimate=1.0,
                       quad_sigma=0.0,
                       refine_edges=1,
                       decode_sharpening=0.25,
                       debug=0)

选项如下

选项 默认 说明
家族 'tag36h11' 标签家族,用空格分隔
nthreads 1 线程数
quad_decimate 2.0 可以在低分辨率图像上检测四边形,这可以提高速度,但会降低姿态精度并略微降低检测率。解码二进制有效载荷仍在全分辨率下进行。将其设置为1.0以使用全分辨率。
quad_sigma 0.0 应应用于分割图像的高斯模糊。参数是像素中的标准差。非常嘈杂的图像从非零值(例如0.8)中受益。
refine_edges 1 当非零时,每个四边形的边缘会被调整以“吸附”到附近的强烈梯度。这在使用简化时很有用,因为它可以大大提高初始四边形估计的质量。通常建议打开(1)。计算成本非常低。如果quad_decimate = 1,则忽略此选项。
decode_sharpening 0.25 对解码图像进行多少锐化?这有助于解码小标签,但在奇特的光照条件或低光照条件下可能或可能不有帮助。
searchpath ['apriltags'] 查找Apriltag 3库的位置,必须是一个列表
debug 0 如果为1,将保存调试图像。运行速度非常慢

通过运行检测器的detect方法来在图像中检测标签

tags = at_detector.detect(img, estimate_tag_pose=False, camera_params=None, tag_size=None)

如果您还想要提取标签姿态,应将estimate_tag_pose设置为True,并且需要提供camera_params[fx, fy, cx, cy])和tag_size(以米为单位)。detect方法返回一个包含以下属性的Detection对象的列表(请注意,带有星号的是在estimate_tag_pose=True时计算的)

属性 说明
tag_family 标签的家族。
tag_id 标签的解码ID。
hamming 纠正了多少个错误位?注意:接受大量纠正的错误会导致假阳性率大幅增加。注意:在此实现中,检测器无法检测汉明距离大于2的标签。
decision_margin 二进制解码过程质量的度量:数据位强度与决策阈值的平均差异。较高的数字大致表示更好的解码。这对于非常小的标签是一个合理的检测精度度量——对于较大的标签则不适用(我们可以在位单元内的任何位置采样并仍然获得良好的检测。)
homography 描述从具有(-1,1)、(1,1)、(1,-1)和(-1, -1)角的“理想”标签到图像像素的投影的3x3单应性矩阵。
center 检测在图像像素坐标中的中心。
corners 标签在图像像素坐标中的角。这些总是围绕标签逆时针排列。
pose_R* 姿态估计的旋转矩阵。
pose_t* 姿态估计的平移。
pose_err* 估计的物空间误差。

自定义布局

如果您想使用自定义布局,则需要为其创建C源文件和头文件,然后重新构建库。然后使用新的libapriltag.so库。您可以在原始的Apriltags存储库中找到更多信息。

开发者说明

轮子在Docker容器内构建。此存储库根目录中的Dockerfile是构建环境的模板。构建环境基于ubuntu:latest,并动态安装python3。make build命令会在构建轮之前创建构建环境(如果尚不存在)。

一旦构建环境(Docker镜像)准备就绪,将使用以下配置启动Docker容器:

  • 将此存储库的根目录挂载到 /apriltag
  • 将目录 dist/ 挂载为 /out 下的目标目录;

在容器内执行来自 assets/build.sh 的构建脚本。构建步骤如下:

  • 从子模块 apriltags/ 中的 apriltag 库在 /builds/<arch> 中配置 cmake 构建;
  • 运行 cmake 构建;
  • 将 so/.dylib/.dll 库文件复制到 /dist/<arch>(容器内);
  • 重复上述步骤为:win64macos arm64macos x86_64linux x86_64linux aarch64linux armv7l
  • 构建 python 轮子(.so 库作为 package_data 嵌入);
  • 将轮子文件复制到 /out(将在容器外的 dist/ 中弹出);

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码发行版

此发布版本没有提供源代码发行版文件。请参阅有关 生成发行版存档 的教程。

构建的发行版

pyapriltags-3.3.0.3-py3-none-win_amd64.whl (1.3 MB 查看哈希)

上传时间: Python 3 Windows x86-64

pyapriltags-3.3.0.3-py3-none-manylinux2014_armv7l.whl (1.2 MB 查看哈希)

上传时间: Python 3

pyapriltags-3.3.0.3-py3-none-manylinux2014_aarch64.whl (1.2 MB 查看哈希)

上传时间: Python 3

pyapriltags-3.3.0.3-py3-none-manylinux2010_x86_64.whl (1.2 MB 查看哈希)

上传时间: Python 3 manylinux: glibc 2.12+ x86-64

pyapriltags-3.3.0.3-py3-none-macosx_11_0_x86_64.whl (1.2 MB 查看哈希)

上传时间: Python 3 macOS 11.0+ x86-64

pyapriltags-3.3.0.3-py3-none-macosx_11_0_arm64.whl (1.2 MB 查看哈希)

上传时间: Python 3 macOS 11.0+ ARM64

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面