#!/usr/bin/perl use strict; use warnings; use Panotools::Script; use Getopt::Long; use Pod::Usage; my $path_output; my $roll; my $pitch; my $yaw; my $help; GetOptions ('o|output=s' => \$path_output, 'r|roll' => \$roll, 'p|pitch' => \$pitch, 'y|yaw' => \$yaw, 'h|help' => \$help); pod2usage (-verbose => 2) if $help; my $path_pto = shift || pod2usage; $path_output = $path_pto unless (defined $path_output); my $pto = new Panotools::Script; $pto->Read ($path_pto); $pto->Centre ('y') if $yaw; $pto->Centre ('p') if $pitch; $pto->Centre ('r') if $roll; # if images are aligned then d,e is probably bogus if ($pto->Sigma ('r') < 100 and $pto->Sigma ('p') < 100 and $pto->Sigma ('y') < 100) { for my $image (@{$pto->Image}) { $image->{a} = 0 unless $image->{a} =~ '='; $image->{b} = 0 unless $image->{b} =~ '='; $image->{c} = 0 unless $image->{c} =~ '='; $image->{d} = 0 unless $image->{d} =~ '='; $image->{e} = 0 unless $image->{e} =~ '='; } for my $key (keys %{$pto->Variable}) { delete $pto->Variable->{$key}->{a}; delete $pto->Variable->{$key}->{b}; delete $pto->Variable->{$key}->{c}; delete $pto->Variable->{$key}->{d}; delete $pto->Variable->{$key}->{e}; } } $pto->Write ($path_output); __END__ =head1 NAME ptocentre - centre images in a panorama =head1 SYNOPSIS ptocentre [options] [--output centred.pto] input.pto Options: -o | --output Filename of centred project (can be the the same as the input) -r | --roll Centre roll -p | --pitch Centre pitch -y | --yaw Centre yaw -h | --help Outputs help documentation =head1 DESCRIPTION B takes a hugin .pto project and centres the images in the panorama. If --output isn't specified then input file is overwritten with output. =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 - October 2008. =cut