Install
$ agentstack add skill-wangyendt-wayne-skills-apriltag-detector ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Pywayne AprilTag Detector
This module detects AprilTag fiducial markers for camera calibration and pose estimation.
Quick Start
from pywayne.cv.apriltag_detector import ApriltagCornerDetector
# Create detector. Default tag family is 36h11.
detector = ApriltagCornerDetector(tag_family="36h11")
# Detect from file path
detections = detector.detect('test.png', show_result=True)
# Detect from numpy array
import cv2
image = cv2.imread('test.png')
detections = detector.detect(image)
Corner Extraction Task Pattern
When the user asks to detect AprilTag corners in an image, produce IDs and corner coordinates directly. Prefer non-GUI code unless the user asks for visualization.
from pywayne.cv.apriltag_detector import ApriltagCornerDetector
detector = ApriltagCornerDetector(
tag_family="36h11",
preprocess=None, # or "norm", "clahe", "equalize", "norm-clahe"
)
detections = detector.detect("image.jpg")
for det in detections:
print({
"id": det.id,
"hamming_distance": det.hamming_distance,
"center": tuple(det.center),
"corners": [tuple(p) for p in det.corners],
})
If detection is poor because of lighting or contrast, retry with preprocess="norm-clahe" or preprocess="clahe" before changing algorithm parameters.
Detection Methods
detect()
Detect AprilTags in an image:
detections = detector.detect(
image, # File path, Path object, or numpy array
show_result=False, # Show visualization window
preprocess=None # Optional override for this call
)
Returns list of detection results with:
id: Tag IDhamming_distance: Detection confidencecenter: Tag center coordinates (x, y)corners: 4 corner coordinates
detectanddraw()
Detect AprilTags and draw results on original image:
result_image = detector.detect_and_draw(image)
cv2.imshow('Detection Result', result_image)
cv2.waitKey(0)
Visualization includes:
- Green polygon outlines
- Red corner circles
- Red ID labels at tag centers
Requirements
cv2(OpenCV) - Image processingnumpy- Array operationsgettool- Downloads apriltag_detection library automatically
Library Installation
The detector automatically checks for and installs the apriltag_detection library using gettool if not found. The pywayne wrapper uses a shared C++ module loader that distinguishes a missing module from a local extension that exists but fails to load because of missing runtime libraries or ABI mismatch.
If installation fails while cloning from GitHub, check for sandbox/proxy restrictions before blaming the user's proxy. Useful checks:
git config --global --get http.proxy
git config --global --get https.proxy
lsof -nP -iTCP:7890 -sTCP:LISTEN
nc -vz 127.0.0.1 7890
curl -I --proxy http://127.0.0.1:7890 https://github.com --connect-timeout 5
In Codex, if nc or curl fails with Operation not permitted or cannot reach 127.0.0.1:7890 inside the sandbox, rerun the essential check or gettool apriltag_detection -b with sandbox_permissions: "require_escalated" and a short justification.
Tag Families And Preprocessing
Supported tag families:
16h5/tag16h525h7/tag25h725h9/tag25h936h9/tag36h936h11/tag36h11(default)
Supported preprocessing modes:
None(default)"norm"or"normalize""clahe""equalize"/"hist"/"eq""norm-clahe"- A sequence such as
["norm", "clahe"]
Detection Result Format
Each detection contains:
| Field | Description | |--------|-------------| | id | Tag identifier | | hamming_distance | Hamming distance (lower = more confident) | | center | Tag center as (x, y) tuple | | corners | 4 corner coordinates as [(x1, y1), (x2, y2), (x3, y3), (x4, y4)] |
Notes
- Supports both grayscale and BGR images
- Automatic grayscale conversion for detection
- Visualization sizes scale with image dimensions
- Uses AprilTag 36h11 tag family by default
- For calibration-board photos under uneven illumination, try
preprocess="norm-clahe"first
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: wangyendt
- Source: wangyendt/wayne-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.