Skip to content
Back to skills

Stereo Tag Matcher

ASecurity

Stereo vision AprilTag matching for dual-camera systems. Use when working with pywayne.cv.stereo_tag_matcher module to match AprilTags from left/right camera views, find common tags between images, stitch stereo images together, and visualize results with color-coded annotations (all tags green, common tags yellow, red connection lines).

  • 8 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added February 10, 2026
developmentpython

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add wangyendt/wayne-skills --skill stereo-tag-matcher --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Stereo Tag Matcher?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Stereo Tag Matcher
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wangyendt-stereo-tag-matcher/badge)](https://www.skillsdirectory.com/skills/wangyendt-stereo-tag-matcher)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: pywayne-cv-stereo-tag-matcher
description: Stereo vision AprilTag matching for dual-camera systems. Use when working with pywayne.cv.stereo_tag_matcher module to match AprilTags from left/right camera views, find common tags between images, stitch stereo images together, and visualize results with color-coded annotations (all tags green, common tags yellow, red connection lines).
---

# Pywayne Stereo Tag Matcher

This module matches AprilTags detected in stereo camera pairs.

## Quick Start

```python
from pywayne.cv.stereo_tag_matcher import StereoTagMatcher
from pathlib import Path

# Initialize matcher with custom colors
matcher = StereoTagMatcher(
    target_height=600,
    line_color=(0, 0, 255),  # Red
    all_tag_color=(0, 255, 0),  # Green
    common_tag_color=(0, 255, 255)  # Yellow
)

# Process stereo pair
left_img = Path('left.png')
right_img = Path('right.png')
matched_info, stitched = matcher.process_pair(left_img, right_img, show=True)

# Save result
if stitched is not None:
    import cv2
    cv2.imwrite('stereo_result.png', stitched)
```

## Initialization

```python
matcher = StereoTagMatcher(
    target_height=600,      # Fixed height for resizing
    line_color=(0, 0, 255),   # Custom line color (BGR)
    line_thickness=2,
    box_thickness=2,
    all_tag_color=(0, 255, 0),
    common_tag_color=(0, 255, 255)
)
```

## Input

| Parameter | Type | Description |
|-----------|------|-------------|
| `image1_input` | str, Path, or np.ndarray | Left camera image |
| `image2_input` | str, Path, or np.ndarray | Right camera image |
| `show` | bool | Display stitched result with cv2.imshow |

## Output

### Returned Dictionary

```python
{
    "tag_id": {
        "cam1_center": (x, y),      # Left image center
        "cam1_corners": [(x1, y1), ...], # Left image corners
        "cam2_center": (x, y),      # Right image center
        "cam2_corners": [(x1, y1), ...]  # Right image corners
    },
    ...
}
```

Only tags found in both images are included in the output.

## Visualization

The stitched image displays:

- **All tags** - Green boxes (BGR: 0, 255, 0)
- **Common tags** - Yellow boxes (BGR: 0, 255, 255)
- **Connection lines** - Red lines connecting common tag centers (BGR: 0, 0, 255)

## Use Cases

- Stereo camera calibration - Match common tags to calibrate stereo cameras
- Robot vision - Identify shared landmarks for navigation
- Augmented reality - Track common fiducial markers

## Requirements

- `cv2` (OpenCV) - Image processing and display
- `numpy` - Array operations
- `pywayne.cv.apriltag_detector` - AprilTag detection

## Notes

- Images are resized to `target_height` for consistent annotation
- Tag coordinates are scaled proportionally based on image dimensions
- Supports both grayscale and BGR color input images

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.