#!/usr/bin/perl use strict; use warnings; use File::Temp qw/tempdir/; use File::Spec; use Image::Size; use Panotools::Script; for my $mov (@ARGV) { my $tempdir = tempdir (CLEANUP => 1); warn $tempdir; my $stubcube = File::Spec->catfile ($tempdir, 'cube'); system ('qtvr2img', $mov, $stubcube); $mov = File::Spec->rel2abs ($mov); my ($width, $height) = imgsize ($stubcube.'_0.pnm'); my $erect = new Panotools::Script; $erect->Panorama->Set (h => int ($width * 1.5708), w => 2 * int ($width * 1.5708), n => '"TIFF c:DEFLATE"'); $erect->Image->[0] = new Panotools::Script::Line::Image; $erect->Image->[0]->Set (f => 0, w => $width, h => $height, v => 90, r => 0, p => 0, y => 0, n => "\"$stubcube"."_0.pnm\""); $erect->Image->[1] = new Panotools::Script::Line::Image; $erect->Image->[1]->Set (f => 0, w => $width, h => $height, v => 90, r => 0, p => 0, y => 90, n => "\"$stubcube"."_1.pnm\""); $erect->Image->[2] = new Panotools::Script::Line::Image; $erect->Image->[2]->Set (f => 0, w => $width, h => $height, v => 90, r => 0, p => 0, y => 180, n => "\"$stubcube"."_2.pnm\""); $erect->Image->[3] = new Panotools::Script::Line::Image; $erect->Image->[3]->Set (f => 0, w => $width, h => $height, v => 90, r => 0, p => 0, y => -90, n => "\"$stubcube"."_3.pnm\""); $erect->Image->[4] = new Panotools::Script::Line::Image; $erect->Image->[4]->Set (f => 0, w => $width, h => $height, v => 90, r => 0, p => 90, y => 0, n => "\"$stubcube"."_4.pnm\""); $erect->Image->[5] = new Panotools::Script::Line::Image; $erect->Image->[5]->Set (f => 0, w => $width, h => $height, v => 90, r => 0, p => -90, y => 0, n => "\"$stubcube"."_5.pnm\""); my $pto_temp = "$stubcube.qtvr2erect.$$.pto"; $erect->Write ($pto_temp); system ('nona', '-o', "$mov.tif", $pto_temp); } __END__ =head1 NAME qtvr2erect - Utility to convert a QTVR file to equirectangular =head1 Synopsis qtvr2erect myqtvr.mov =head1 DESCRIPTION Given one or more QTVR .mov files, extracts cube-faces with qtvr2img (a tool shipped with freepv) and assembles them into a single equirectangular image using nona (a tool shipped with hugin). =head1 Calling syntax qtvr2erect [] ... =head1 License This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. =head1 See Also L =head1 Author Bruno Postle, Ebruno (at) postle.netE =cut