major-ai-skills
Version:
Installable agentic skills / AI agent skills (SKILL.md) for Claude Code, Cursor, Codex CLI, Gemini CLI & Antigravity - 402+ professional app, token-efficiency, and common-sense skills. SEO/GEO ready.
107 lines (82 loc) • 3.67 kB
Markdown
---
name: opencv
description: "Build OpenCV image and video processing workflows with transforms, contours, capture, and classical vision operations."
category: scientific
risk: safe
source: self
source_type: self
date_added: "2026-08-26"
tags: ["opencv", "computer-vision", "image-processing", "python", "video", "claude"]
tools: ["claude", "cursor", "gemini", "codex"]
---
# OpenCV Computer Vision AI Skill Guide
## Overview & Engine Architecture
OpenCV (`cv2`) provides image/video IO, geometric and photometric transforms, classical feature detectors, and drawing utilities. Images are NumPy arrays in BGR order by default. Agents track color-space conversions explicitly, keep resize/crop parameters reproducible, release video captures, and push deep-learning detection to `@pytorch` / `@huggingface-transformers` when classical methods plateau.
```
imread / VideoCapture
-> BGR ndarray
-> cvtColor / resize / filter / threshold
-> contours / features / write
```
## When to use this skill
- Preprocessing images for ML models
- Classical detection (edges, contours, template match)
- Frame sampling and annotation from video
## Operational directives
1. Remember `cv2.imread` returns BGR - convert before RGB-only libraries.
2. Check for `None` after reads; fail fast on missing paths.
3. Use `cv2.IMREAD_COLOR` / unchanged flags intentionally for alpha/bit depth.
4. Release `VideoCapture` / writers in `finally` blocks.
5. Do not hardcode absolute machine-specific GUI paths in headless servers (`imshow` needs a display).
## Image preprocess example
```python
import cv2
from pathlib import Path
path = Path("samples/part.jpg")
bgr = cv2.imread(str(path), cv2.IMREAD_COLOR)
if bgr is None:
raise FileNotFoundError(path)
rgb = cv2.cvtColor(bgr, cv2.COLOR_BGR2RGB)
resized = cv2.resize(bgr, (640, 480), interpolation=cv2.INTER_AREA)
gray = cv2.cvtColor(resized, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5, 5), 0)
edges = cv2.Canny(blur, 50, 150)
cv2.imwrite("out/edges.png", edges)
```
## Contours sketch
```python
_, thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
vis = resized.copy()
cv2.drawContours(vis, contours, -1, (0, 255, 0), 2)
```
## Video frame sample
```python
cap = cv2.VideoCapture("clips/line.mp4")
try:
ok, frame = cap.read()
if ok:
cv2.imwrite("out/frame0.jpg", frame)
finally:
cap.release()
```
## Common failures
| Symptom | Cause | Fix |
| --- | --- | --- |
| Wrong colors in matplotlib | BGR vs RGB | `cvtColor` |
| `imread` None | path/Unicode/cwd | resolve Path; check exists |
| GUI crash headless | `imshow` without display | write files; use notebooks |
| Slow loops | pure Python per pixel | vectorized NumPy/OpenCV ops |
## Best practices
- Keep calibration matrices and resize shapes with dataset versions.
- Normalize orientation via EXIF when feeding photos from phones.
- Use lossless PNG for intermediate masks; JPEG for previews.
- Combine with `@pytorch` for DNN modules (`cv2.dnn`) only when appropriate.
## Limitations
- Not a full video editing suite (see dedicated video skills when present).
- Patent/licensing constraints may affect some algorithms in deployments.
- GPU modules (`cuda`) depend on build flags and drivers.
## Related skills
- `@pytorch` / `@huggingface-transformers` - learned vision models
- `@jupyter` - interactive visualization of intermediates
- `@ffmpeg` - heavy video transcoding outside OpenCV