Street View Pano Loader
Wide Cinematic Panoramas From Street View — Real Stitching, Not One Cropped Frame
- image
- metadata
A single Street View request gets you one frame at up to 640px wide and a 120° field of view. Fine for a background plate, useless for the kind of ultra-wide cinematic landscape that makes people reach for a panorama in the first place. StreetViewPanoLoader is the pack's answer: it fetches several overlapping tiles of the same scene and stitches them into one continuous, perspective-corrected panorama.
If you're doing virtual location scouting, want a wide ControlNet base for a stylized cityscape, or just want the full view of a viewpoint you love, this is the node. It's also the one in the pack where you'll actually feel the parameters, because stitching is an art.
How it works
The node fetches num_images square 640x640 tiles at slightly different headings, all at the same pitch. It spaces them out by fov_per_image × (1 - overlap/100) around your center_heading, so adjacent tiles share a strip of the same scene. Then it hands them to OpenCV's stitcher, which finds matching features, works out the perspective, warps everything onto a virtual cylinder, and blends the seams.
That warp is why a successful stitch isn't a rectangle. Curved edges and black borders aren't a bug - they're the proof that perspective correction happened. You're looking at a cylinder, unfolded. A naive side-by-side paste would be perfectly rectangular and obviously wrong.
The inputs that matter
center_heading(0–360) - the direction the middle of your panorama faces.num_images(2–5) - tile count; more tiles = wider shot. Start at 3.fov_per_image(30–120) - how wide each tile is. Narrower (70–80) means less edge distortion, but you'll need more tiles to cover the same width.overlap_percentage(10–70) - how much adjacent tiles share. This is the knob to reach for when things fail. OpenCV needs to see the same features in two images to match them; below ~30% overlap it often can't.pitch(−90 to 90) - tilt, same as the plain loader.
Outputs are image (the stitched IMAGE) and metadata (a STRING). Read the metadata - it tells you whether OpenCV actually succeeded or the node fell back to a dumb side-by-side stitch (which looks visibly disjointed). If you see the fallback note, that's your cue to raise the overlap.
When the stitch fails
Flat, low-texture scenes - open water, empty fields, blank walls - defeat feature matching, and OpenCV will refuse. The order of attack: raise overlap_percentage to 40–50 first, then narrow fov_per_image a bit. The node is honest about this; the console prints a clear "not enough matching features" message and falls back gracefully instead of crashing.
One install note specific to this node: it's the only one in the pack that needs OpenCV (opencv-python), which the requirements file installs unconditionally - a chunky wheel, so the first install takes a moment longer than the pack's other deps.
Refining the result
Once you have your warped panorama, the README's two paths are both good: crop the black edges off for a clean widescreen, or - the more fun route - feed it into your img2img workflow with a descriptive prompt and a low denoise (0.3–0.5) so the model fills in the black corners while respecting the real pixels. Keep denoise low; at high values the model starts rewriting the photo you went to all this trouble to capture.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| location | STRING | 46.6237597,8.0305018 | — |
| center_heading | FLOAT | 133.40–360 | — |
| pitch | FLOAT | -5.0-90–90 | — |
| fov_per_image | INT | 9030–120 | — |
| num_images | INT | 32–5 | — |
| overlap_percentage | INT | 3010–70 | — |
| historical_date_idopt | STRING | Enter a panorama ID to load a historical panorama from a specific date |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| metadata | STRING | — |