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架构amd64
、aarch64
和arm32v7
构建和发布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>
(容器内); - 重复上述步骤为:
win64
、macos arm64
、macos x86_64
、linux x86_64
、linux aarch64
、linux armv7l
; - 构建 python 轮子(.so 库作为
package_data
嵌入); - 将轮子文件复制到
/out
(将在容器外的dist/
中弹出);
项目详情
pyapriltags-3.3.0.3-py3-none-manylinux2014_armv7l.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ecb6ea0620a888a042940ad69850f5925ac8cc9e00524da9655b344f7133f3b3 |
|
MD5 | 7c95c4c496159532ea591221e082d1f7 |
|
BLAKE2b-256 | 4ac643128a4daa96609cd33fd25f2fecb7b28fb54b4da705fef3d00f5d35ae0b |
pyapriltags-3.3.0.3-py3-none-manylinux2014_aarch64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b20469a61989e4c3fa155ed4a39a785f5498369ca1a84e5623da10ba9e24dec7 |
|
MD5 | 0c8faf54013b1b006acd1c326aa9574d |
|
BLAKE2b-256 | 68175d4f52a3bc1e7dd42eded983e08557e986acb00e4b804013af4237b601f3 |
pyapriltags-3.3.0.3-py3-none-manylinux2010_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bd8831e01c5a1910655d7f4781f4535fff2d4d4a96ee1874b70cf6fda7e43b03 |
|
MD5 | 59f1f7eddc1ef69fdbe9407e72e0591b |
|
BLAKE2b-256 | fff8e16a5c2cefbeb905bba9a8cf36e0d23311e76310c5b2195571ad81048653 |
pyapriltags-3.3.0.3-py3-none-macosx_11_0_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c5dc0e0e0e75910c2302f940f0850bcf1e28c9500bc47b49d95ade195461ae63 |
|
MD5 | 69e87d055dca6f696037f0b80ff287b8 |
|
BLAKE2b-256 | 0dadffa0ab3a15fba2e869bdd9e0ba9573b35e9f8aad80a8958987db36e61485 |
pyapriltags-3.3.0.3-py3-none-macosx_11_0_arm64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f55ccd25301b7aff416dfee45026a50589e5d5bd12f546a884c936850f1e64e2 |
|
MD5 | 333cdaf395e24102eb4fe1c27868d1cf |
|
BLAKE2b-256 | e7d28a735d74e4fa66a940bd70981596cbe5f0511c50c7e0cc3cf556100883ec |