Piranesi's perspective trick

350 views
Skip to first unread message

Bruno Postle

unread,
Apr 27, 2019, 8:19:16 AM4/27/19
to hugi...@googlegroups.com
Hi all, I've been playing around with trying to reproduce some of the perspective effects of artists like Piranesi.

This is a development of the work we did on the Panini projection in Hugin, but although I have some code, this stuff is not a good fit for Hugin as it doesn't result in a general purpose projection, this is why I call it "Piranesi's Perspective Trick".

Anyway, I know there is interest in this sort of thing, so I've written it up here:

https://link.medium.com/LnvCQvqgdW

I have some _very_ clunky code which I used for testing, this of course is available for anyone who wants to see how not to do it ;)

--
Bruno

jmuc...@gmail.com

unread,
Apr 27, 2019, 1:08:02 PM4/27/19
to hugin and other free panoramic software
Thanks for this, Bruno. Very interesting!

Terry Duell

unread,
Apr 27, 2019, 8:01:12 PM4/27/19
to hugi...@googlegroups.com
Hello Bruno,

On Sat, 27 Apr 2019 22:19:05 +1000, Bruno Postle <br...@postle.net> wrote:

> Hi all, I've been playing around with trying to reproduce some of the
> perspective effects of artists like Piranesi.

A good story and an interesting problem to solve, thanks.

Cheers,
--
Regards,
Terry Duell

Margaret Wong

unread,
Apr 29, 2019, 6:23:26 AM4/29/19
to hugi...@googlegroups.com
Hi Bruno

What a really fascinating article:)  Thanks very much :)


kind regards

Margaret


--
A list of frequently asked questions is available at: http://wiki.panotools.org/Hugin_FAQ
---
You received this message because you are subscribed to the Google Groups "hugin and other free panoramic software" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hugin-ptx+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/hugin-ptx/3DD3A289-D3F8-45EC-B250-A3008002B9A9%40postle.net.
For more options, visit https://groups.google.com/d/optout.

David W. Jones

unread,
May 1, 2019, 3:10:43 AM5/1/19
to hugin-ptx
Thanks. Haven't read it yet, but it seems to me that control points
could be used to do arbitrary image warping. Like we used to do in high
school art by overlaying a square grid over an image, then drawing a
distorted grid over another sheet and copying the points over (along
with whatever line/shading/distortions were needed due to the distorted
grid).

--
David W. Jones
gnome...@gmail.com
wandering the landscape of god
http://dancingtreefrog.com

Paul Womack

unread,
May 1, 2019, 4:57:03 AM5/1/19
to hugi...@googlegroups.com
Yes - this is a perfectly usual way to specify a morph.

e.g. Imagemagick's -distort Polynomial option

http://www.imagemagick.org/script/command-line-options.php#distort

  BugBear

Harry van der Wolf

unread,
May 1, 2019, 5:56:38 AM5/1/19
to hugi...@googlegroups.com
Thanks a lot Bruno.

Great article!

Harry

Op wo 1 mei 2019 om 10:57 schreef Paul Womack <bugbear...@gmail.com>:
--
A list of frequently asked questions is available at: http://wiki.panotools.org/Hugin_FAQ
---
You received this message because you are subscribed to the Google Groups "hugin and other free panoramic software" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hugin-ptx+...@googlegroups.com.

David W. Jones

unread,
May 2, 2019, 2:56:49 AM5/2/19
to hugin-ptx
So it could do something like map the square black grid in the attached
image to the green grid?

On 4/30/19 11:56 PM, Harry van der Wolf wrote:
> Thanks a lot Bruno.
>
> Great article!
>
> Harry
>
> Op wo 1 mei 2019 om 10:57 schreef Paul Womack:
>
> Yes - this is a perfectly usual way to specify a morph.
>
> e.g. Imagemagick's -distort Polynomial option
>
> http://www.imagemagick.org/script/command-line-options.php#distort
>
>   BugBear
>
> On Wed, 1 May 2019 at 08:10, David W. Jones <gnome...@gmail.com
> <mailto:gnome...@gmail.com>> wrote:
>
>
> Thanks. Haven't read it yet, but it seems to me that control points
> could be used to do arbitrary image warping. Like we used to do
> in high
> school art by overlaying a square grid over an image, then
> drawing a
> distorted grid over another sheet and copying the points over
> (along
> with whatever line/shading/distortions were needed due to the
> distorted
> grid).
> <https://groups.google.com/d/optout>
g4633.png

Bruno Postle

unread,
May 2, 2019, 4:51:19 AM5/2/19
to hugi...@googlegroups.com
Exactly, you can do this in ImageMagick, but you have to specify all the control points on the command line. This is also something that would be nice to have in Hugin for otherwise unfixable alignment problems, it would be nice to pick this up again.

--
Bruno


On 2 May 2019 07:56:41 BST, "David W. Jones" wrote:
>So it could do something like map the square black grid in the attached
>
>image to the green grid?

Paul Womack

unread,
May 2, 2019, 5:46:19 AM5/2/19
to hugi...@googlegroups.com
On Thu, 2 May 2019 at 09:51, Bruno Postle <br...@postle.net> wrote:
Exactly, you can do this in ImageMagick, but you have to specify all the control points on the command line. This is also something that would be nice to have in Hugin for otherwise unfixable alignment problems, it would be nice to pick this up again.

"someone" should do that!

 BugBear
Message has been deleted

sandi...@gmail.com

unread,
May 7, 2019, 2:10:17 AM5/7/19
to hugin and other free panoramic software

I just discover ptomorph  and wondering is there any way I can use on it on a windows machine?  

Bruno Postle

unread,
May 7, 2019, 5:45:55 AM5/7/19
to hugi...@googlegroups.com
You can run ptomorph on Windows, but you will need to install both Perl and ImageMagick, at least, this isn't straightforward if you are not familiar with these tools.

ptomorph is a proof of concept, and it works very well for stitching two photos, but I would expect strange results with a project with more than two photos.

--
Bruno

Bare Pixels

unread,
May 7, 2019, 10:36:08 PM5/7/19
to hugin and other free panoramic software
Installed perl64 and ImageMagick all went well and test working
path:
C:/Perl64
C:/ImageMagick
C:/Panotools

Tried C:\Panotools>perl makefile.PL  and got this

Warning: prerequisite Image::ExifTool 9.07 not found.
Warning: prerequisite Image::Size 2.9 not found.
Generating a dmake-style Makefile
Writing Makefile for Panotools::Script
Writing MYMETA.yml and MYMETA.json

Help please

Bruno Postle

unread,
May 8, 2019, 5:30:03 AM5/8/19
to hugi...@googlegroups.com
Here there is a tool called 'cpan' for installing Perl modules, though your Perl installer may have a different way to do this. I would use this command:

cpan Image::ExifTool Image::Size

--
Bruno

Bare Pixels

unread,
May 8, 2019, 7:03:13 PM5/8/19
to hugin and other free panoramic software
OK I think that worked. I ran it twice and on the second time it show they are up to date

C:\Perl64>cpan Image::ExifTool Image::Size
Loading internal null logger. Install Log::Log4perl for logging messages
CPAN: Term::ANSIColor loaded ok (v4.06)
Reading 'C:\Perl64\cpan\Metadata'
  Database was generated on Wed, 08 May 2019 02:55:41 GMT
CPAN: Module::CoreList loaded ok (v5.20181129_26)
Image::ExifTool is up to date (11.30).
Image::Size is up to date (3.300)

Question what is next?  I have a hugin pto file and 2 png.   a copy is here   https://drive.google.com/file/d/1QmnFT2n-pZv8XcOk0xQz5_M7ADgOrsiH/

How to run ptomorp on the pto file LOL help.  From command prompt I navigate into panotools folder and tried the command and got
'ptomorph' is not recognized as an internal or external command,
operable program or batch file.


Sorry am a newbie.   

Bruno Postle

unread,
May 9, 2019, 9:27:57 AM5/9/19
to hugin and other free panoramic software
I just reread the ptomorph instructions and it says that it won't
work on Windows. This isn't entirely true, as I can see that it
depends on an IPC module that *claims* to work...

So I stitched your test project, I had to redo the control points
(premorph.pto), and you can see that there are some parallax
artefacts (premorph.jpg).

You then run ptomorph on this project file using the command-line:

ptomorph premorph.pto

..and it creates two temporary distorted PNG files and a new project
file called morphed.pto that uses these temporary files as input,
which you then stitch as normal (morphed.jpg).

--
Bruno

On Wed 08-May-2019 at 16:03 -0700, Bare Pixels wrote:
> OK I think that worked. I ran it twice and on the second time it
> show they are up to date

morphed.jpg
premorph.jpg
premorph.pto

Bare Pixels

unread,
May 9, 2019, 6:35:42 PM5/9/19
to hugin and other free panoramic software
I Tried
C:\Perl64>perl ptomorph premorph.pto
Can't locate Panotools/Script.pm in @INC (you may need to install the Panotools::Script module) (@INC contains: C:/Perl64/site/lib C:/Perl64/lib) at ptomorph line 4.
BEGIN failed--compilation aborted at ptomorph line 4.

So I tried to install Panotools::Script but got Result: FAIL

C:\>perl -MCPAN -e shell

cpan shell -- CPAN exploration and modules installation (v2.18)
Enter 'h' for help.

cpan> install Panotools::Script::Line::Variable
Reading 'C:\Perl64\cpan\Metadata'
  Database was generated on Thu, 09 May 2019 05:41:03 GMT
Running install for module 'Panotools::Script::Line::Variable'
Checksum for C:\Perl64\cpan\sources\authors\id\B\BP\BPOSTLE\Panotools-Script-0.28.tar.gz ok
Scanning cache C:\Perl64/cpan/build for sizes
............................................................................DONE
Panotools-Script-0.28/
Panotools-Script-0.28/dos/
Panotools-Script-0.28/dos/make_exe.pl
Panotools-Script-0.28/MANIFEST
Panotools-Script-0.28/Changes
Panotools-Script-0.28/lib/
Panotools-Script-0.28/lib/Panotools/
Panotools-Script-0.28/lib/Panotools/Photos.pm
Panotools-Script-0.28/lib/Panotools/Makefile.pm
Panotools-Script-0.28/lib/Panotools/Script/
Panotools-Script-0.28/lib/Panotools/Script/Line/
Panotools-Script-0.28/lib/Panotools/Script/Line/Mode.pm
Panotools-Script-0.28/lib/Panotools/Script/Line/Control.pm
Panotools-Script-0.28/lib/Panotools/Script/Line/Panorama.pm
Panotools-Script-0.28/lib/Panotools/Script/Line/Image.pm
Panotools-Script-0.28/lib/Panotools/Script/Line/Option.pm
Panotools-Script-0.28/lib/Panotools/Script/Line/Mask.pm
Panotools-Script-0.28/lib/Panotools/Script/Line/ControlMorph.pm
Panotools-Script-0.28/lib/Panotools/Script/Line/Output.pm
Panotools-Script-0.28/lib/Panotools/Script/Line/ImageMetadata.pm
Panotools-Script-0.28/lib/Panotools/Script/Line/Variable.pm
Panotools-Script-0.28/lib/Panotools/Script/Line.pm
Panotools-Script-0.28/lib/Panotools/Script.pm
Panotools-Script-0.28/lib/Panotools/Makefile/
Panotools-Script-0.28/lib/Panotools/Makefile/Comment.pm
Panotools-Script-0.28/lib/Panotools/Makefile/Rule.pm
Panotools-Script-0.28/lib/Panotools/Makefile/Utils.pm
Panotools-Script-0.28/lib/Panotools/Makefile/Variable.pm
Panotools-Script-0.28/lib/Panotools/Matrix.pm
Panotools-Script-0.28/README
Panotools-Script-0.28/META.yml
Panotools-Script-0.28/desktop/
Panotools-Script-0.28/desktop/erect2qtvr-gui.desktop
Panotools-Script-0.28/desktop/README
Panotools-Script-0.28/desktop/img2pto.desktop
Panotools-Script-0.28/desktop/ptoinfo-gui.desktop
Panotools-Script-0.28/bin/
Panotools-Script-0.28/bin/pafextract
Panotools-Script-0.28/bin/gigatile
Panotools-Script-0.28/bin/erect2mercator
Panotools-Script-0.28/bin/ptoanchor
Panotools-Script-0.28/bin/tif2svg-gui
Panotools-Script-0.28/bin/ptosort
Panotools-Script-0.28/bin/enfuse-mask
Panotools-Script-0.28/bin/ptovariable
Panotools-Script-0.28/bin/panostart
Panotools-Script-0.28/bin/ptomorph
Panotools-Script-0.28/bin/nona-mask
Panotools-Script-0.28/bin/ptoinfo
Panotools-Script-0.28/bin/tif2svg
Panotools-Script-0.28/bin/gigastart
Panotools-Script-0.28/bin/erect2cubic
Panotools-Script-0.28/bin/cubic2erect
Panotools-Script-0.28/bin/enblend-svg-gui
Panotools-Script-0.28/bin/lens-submit
Panotools-Script-0.28/bin/ptodouble
Panotools-Script-0.28/bin/process-masks-gui
Panotools-Script-0.28/bin/ptoreset
Panotools-Script-0.28/bin/ptoinfo-gui
Panotools-Script-0.28/bin/erect2qtvr
Panotools-Script-0.28/bin/jpeg2qtvr
Panotools-Script-0.28/bin/match-n-shift
Panotools-Script-0.28/bin/gmaptemplate
Panotools-Script-0.28/bin/erect2planet
Panotools-Script-0.28/bin/ptocentre
Panotools-Script-0.28/bin/enblend-mask
Panotools-Script-0.28/bin/ptobind
Panotools-Script-0.28/bin/ptosplit
Panotools-Script-0.28/bin/pto2gpano
Panotools-Script-0.28/bin/ptoget
Panotools-Script-0.28/bin/ptopath
Panotools-Script-0.28/bin/enblend-svg
Panotools-Script-0.28/bin/ptochain
Panotools-Script-0.28/bin/ptoset
Panotools-Script-0.28/bin/ptomerge
Panotools-Script-0.28/bin/nona-svg
Panotools-Script-0.28/bin/ptscluster
Panotools-Script-0.28/bin/process-masks
Panotools-Script-0.28/bin/ptoclean
Panotools-Script-0.28/bin/qtvr2erect-gui
Panotools-Script-0.28/bin/entile
Panotools-Script-0.28/bin/transform-pano
Panotools-Script-0.28/bin/ptohalve
Panotools-Script-0.28/bin/ptsed
Panotools-Script-0.28/bin/ptofill
Panotools-Script-0.28/bin/erect2qtvr-gui
Panotools-Script-0.28/bin/pto2mk2
Panotools-Script-0.28/bin/ptodummy
Panotools-Script-0.28/bin/qtvr2erect
Panotools-Script-0.28/doc/
Panotools-Script-0.28/doc/match-n-shift.svg
Panotools-Script-0.28/LICENSE
Panotools-Script-0.28/t/
Panotools-Script-0.28/t/006.parse-morph.t
Panotools-Script-0.28/t/012.read-pto.t
Panotools-Script-0.28/t/002.parse-panorama.t
Panotools-Script-0.28/t/021.morph.t
Panotools-Script-0.28/t/103.platform.t
Panotools-Script-0.28/t/104.metachars.t
Panotools-Script-0.28/t/031.matrix.t
Panotools-Script-0.28/t/001.parse-control.t
Panotools-Script-0.28/t/005.parse-mode.t
Panotools-Script-0.28/t/102.platform.t
Panotools-Script-0.28/t/201.pano_trafo.t
Panotools-Script-0.28/t/022.mask.t
Panotools-Script-0.28/t/011.read-optimise.t
Panotools-Script-0.28/t/101.makerule.t
Panotools-Script-0.28/t/032.image.t
Panotools-Script-0.28/t/data/
Panotools-Script-0.28/t/data/cemetery/
Panotools-Script-0.28/t/data/cemetery/dscn4906.jpg
Panotools-Script-0.28/t/data/cemetery/hugin-optimise.txt
Panotools-Script-0.28/t/data/cemetery/dscn4905.jpg
Panotools-Script-0.28/t/data/cemetery/dscn4909.jpg
Panotools-Script-0.28/t/data/cemetery/hugin-stitch.txt
Panotools-Script-0.28/t/data/cemetery/hugin.pto
Panotools-Script-0.28/t/data/cemetery/dscn4908.jpg
Panotools-Script-0.28/t/data/cemetery/dscn4907.jpg
Panotools-Script-0.28/t/data/mask/
Panotools-Script-0.28/t/data/mask/sheep0002_mask.tif
Panotools-Script-0.28/t/data/mask/sheep0001_mask.tif
Panotools-Script-0.28/t/data/equirectangular/
Panotools-Script-0.28/t/data/equirectangular/equirectangular.jpg
Panotools-Script-0.28/t/004.parse-variable.t
Panotools-Script-0.28/t/020.create-script.t
Panotools-Script-0.28/t/034.angle.t
Panotools-Script-0.28/t/010.read-stitch.t
Panotools-Script-0.28/t/106.photos.t
Panotools-Script-0.28/t/105.vars.t
Panotools-Script-0.28/t/033.points.t
Panotools-Script-0.28/Makefile.PL
Configuring B/BP/BPOSTLE/Panotools-Script-0.28.tar.gz with Makefile.PL
Checking if your kit is complete...
Looks good
Generating a dmake-style Makefile
Writing Makefile for Panotools::Script
Writing MYMETA.yml and MYMETA.json
  BPOSTLE/Panotools-Script-0.28.tar.gz
  C:\Perl64\bin\perl.exe Makefile.PL INSTALLDIRS=site -- OK
Running make for B/BP/BPOSTLE/Panotools-Script-0.28.tar.gz
cp lib/Panotools/Makefile/Comment.pm blib\lib\Panotools\Makefile\Comment.pm
cp lib/Panotools/Script/Line/Mask.pm blib\lib\Panotools\Script\Line\Mask.pm
cp lib/Panotools/Photos.pm blib\lib\Panotools\Photos.pm
cp lib/Panotools/Script/Line.pm blib\lib\Panotools\Script\Line.pm
cp lib/Panotools/Makefile.pm blib\lib\Panotools\Makefile.pm
cp lib/Panotools/Script.pm blib\lib\Panotools\Script.pm
cp lib/Panotools/Makefile/Variable.pm blib\lib\Panotools\Makefile\Variable.pm
cp lib/Panotools/Script/Line/Output.pm blib\lib\Panotools\Script\Line\Output.pm
cp lib/Panotools/Script/Line/Option.pm blib\lib\Panotools\Script\Line\Option.pm
cp lib/Panotools/Script/Line/Image.pm blib\lib\Panotools\Script\Line\Image.pm
cp lib/Panotools/Script/Line/ImageMetadata.pm blib\lib\Panotools\Script\Line\ImageMetadata.pm
cp lib/Panotools/Makefile/Rule.pm blib\lib\Panotools\Makefile\Rule.pm
cp lib/Panotools/Makefile/Utils.pm blib\lib\Panotools\Makefile\Utils.pm
cp lib/Panotools/Matrix.pm blib\lib\Panotools\Matrix.pm
cp lib/Panotools/Script/Line/ControlMorph.pm blib\lib\Panotools\Script\Line\ControlMorph.pm
cp lib/Panotools/Script/Line/Mode.pm blib\lib\Panotools\Script\Line\Mode.pm
cp lib/Panotools/Script/Line/Control.pm blib\lib\Panotools\Script\Line\Control.pm
cp lib/Panotools/Script/Line/Variable.pm blib\lib\Panotools\Script\Line\Variable.pm
cp lib/Panotools/Script/Line/Panorama.pm blib\lib\Panotools\Script\Line\Panorama.pm
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/cubic2erect blib\script\cubic2erect
pl2bat.bat blib\script\cubic2erect
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/enblend-mask blib\script\enblend-mask
pl2bat.bat blib\script\enblend-mask
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/enblend-svg blib\script\enblend-svg
pl2bat.bat blib\script\enblend-svg
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/enblend-svg-gui blib\script\enblend-svg-gui
pl2bat.bat blib\script\enblend-svg-gui
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/enfuse-mask blib\script\enfuse-mask
pl2bat.bat blib\script\enfuse-mask
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/entile blib\script\entile
pl2bat.bat blib\script\entile
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/erect2cubic blib\script\erect2cubic
pl2bat.bat blib\script\erect2cubic
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/erect2mercator blib\script\erect2mercator
pl2bat.bat blib\script\erect2mercator
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/erect2planet blib\script\erect2planet
pl2bat.bat blib\script\erect2planet
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/erect2qtvr blib\script\erect2qtvr
pl2bat.bat blib\script\erect2qtvr
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/erect2qtvr-gui blib\script\erect2qtvr-gui
pl2bat.bat blib\script\erect2qtvr-gui
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/gigastart blib\script\gigastart
pl2bat.bat blib\script\gigastart
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/gigatile blib\script\gigatile
pl2bat.bat blib\script\gigatile
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/gmaptemplate blib\script\gmaptemplate
pl2bat.bat blib\script\gmaptemplate
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/jpeg2qtvr blib\script\jpeg2qtvr
pl2bat.bat blib\script\jpeg2qtvr
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/lens-submit blib\script\lens-submit
pl2bat.bat blib\script\lens-submit
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/match-n-shift blib\script\match-n-shift
pl2bat.bat blib\script\match-n-shift
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/nona-mask blib\script\nona-mask
pl2bat.bat blib\script\nona-mask
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/nona-svg blib\script\nona-svg
pl2bat.bat blib\script\nona-svg
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/pafextract blib\script\pafextract
pl2bat.bat blib\script\pafextract
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/panostart blib\script\panostart
pl2bat.bat blib\script\panostart
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/process-masks blib\script\process-masks
pl2bat.bat blib\script\process-masks
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/process-masks-gui blib\script\process-masks-gui
pl2bat.bat blib\script\process-masks-gui
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/pto2gpano blib\script\pto2gpano
pl2bat.bat blib\script\pto2gpano
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/pto2mk2 blib\script\pto2mk2
pl2bat.bat blib\script\pto2mk2
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptoanchor blib\script\ptoanchor
pl2bat.bat blib\script\ptoanchor
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptobind blib\script\ptobind
pl2bat.bat blib\script\ptobind
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptocentre blib\script\ptocentre
pl2bat.bat blib\script\ptocentre
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptochain blib\script\ptochain
pl2bat.bat blib\script\ptochain
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptoclean blib\script\ptoclean
pl2bat.bat blib\script\ptoclean
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptodouble blib\script\ptodouble
pl2bat.bat blib\script\ptodouble
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptodummy blib\script\ptodummy
pl2bat.bat blib\script\ptodummy
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptofill blib\script\ptofill
pl2bat.bat blib\script\ptofill
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptoget blib\script\ptoget
pl2bat.bat blib\script\ptoget
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptohalve blib\script\ptohalve
pl2bat.bat blib\script\ptohalve
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptoinfo blib\script\ptoinfo
pl2bat.bat blib\script\ptoinfo
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptoinfo-gui blib\script\ptoinfo-gui
pl2bat.bat blib\script\ptoinfo-gui
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptomerge blib\script\ptomerge
pl2bat.bat blib\script\ptomerge
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptomorph blib\script\ptomorph
pl2bat.bat blib\script\ptomorph
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptopath blib\script\ptopath
pl2bat.bat blib\script\ptopath
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptoreset blib\script\ptoreset
pl2bat.bat blib\script\ptoreset
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptoset blib\script\ptoset
pl2bat.bat blib\script\ptoset
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptosort blib\script\ptosort
pl2bat.bat blib\script\ptosort
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptosplit blib\script\ptosplit
pl2bat.bat blib\script\ptosplit
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptovariable blib\script\ptovariable
pl2bat.bat blib\script\ptovariable
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptscluster blib\script\ptscluster
pl2bat.bat blib\script\ptscluster
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/ptsed blib\script\ptsed
pl2bat.bat blib\script\ptsed
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/qtvr2erect blib\script\qtvr2erect
pl2bat.bat blib\script\qtvr2erect
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/qtvr2erect-gui blib\script\qtvr2erect-gui
pl2bat.bat blib\script\qtvr2erect-gui
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/tif2svg blib\script\tif2svg
pl2bat.bat blib\script\tif2svg
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/tif2svg-gui blib\script\tif2svg-gui
pl2bat.bat blib\script\tif2svg-gui
"C:\Perl64\bin\perl.exe" -MExtUtils::Command -e cp -- bin/transform-pano blib\script\transform-pano
pl2bat.bat blib\script\transform-pano
  BPOSTLE/Panotools-Script-0.28.tar.gz
  C:\Perl64\site\bin\dmake.exe -- OK
Running make test
"C:\Perl64\bin\perl.exe" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib\lib', 'blib\arch')" t/*.t
t/001.parse-control.t ... ok
t/002.parse-panorama.t .. ok
t/004.parse-variable.t .. ok
t/005.parse-mode.t ...... ok
t/006.parse-morph.t ..... ok
t/010.read-stitch.t ..... ok
t/011.read-optimise.t ... ok
t/012.read-pto.t ........ ok
t/020.create-script.t ... ok
t/021.morph.t ........... ok
t/022.mask.t ............ ok
t/031.matrix.t .......... ok
t/032.image.t ........... ok
t/033.points.t .......... ok
t/034.angle.t ........... ok
t/101.makerule.t ........ 'make' is not recognized as an internal or external command,
operable program or batch file.
t/101.makerule.t ........ ok   ..
t/102.platform.t ........ ok
t/103.platform.t ........ ok
t/104.metachars.t ....... Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/\tuname -a > \${ <-- HERE TMPDIR}/bar && echo \\"\\ \\#\\#\\#\\ \\\(woo\\!\\\)\\ \\#\\#\\#\\ \\"/ at t/104.metachars.t line 28.
t/104.metachars.t ....... Dubious, test returned 255 (wstat 65280, 0xff00)
No subtests run
t/105.vars.t ............ ok
t/106.photos.t .......... ok
t/201.pano_trafo.t ...... 'pano_trafo' is not recognized as an internal or external command,
operable program or batch file.
pano_trafo not found, skipping tests...
t/201.pano_trafo.t ...... ok

Test Summary Report
-------------------
t/104.metachars.t     (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: No plan found in TAP output
Files=22, Tests=212,  5 wallclock secs ( 0.05 usr +  0.11 sys =  0.16 CPU)
Result: FAIL
Failed 1/22 test programs. 0/212 subtests failed.
dmake.exe:  Error code 255, while making 'test_dynamic'
  BPOSTLE/Panotools-Script-0.28.tar.gz
  C:\Perl64\site\bin\dmake.exe test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports BPOSTLE/Panotools-Script-0.28.tar.gz
Failed during this command:
 BPOSTLE/Panotools-Script-0.28.tar.gz         : make_test NO
------------------------------------------------------------------------------------------------------

How do I know if I have install Panotools::Script properly?

C:\Perl64>perl ptomorph premorph.pto
Can't locate Panotools/Script.pm in @INC (you may need to install the Panotools::Script module) (@INC contains: C:/Perl64/site/lib C:/Perl64/lib) at ptomorph line 4.
BEGIN failed--compilation aborted at ptomorph line 4.

C:\Perl64>ptomorph premorph.pto
'ptomorph' is not recognized as an internal or external command,
operable program or batch file.



On Thursday, May 9, 2019 at 6:27:57 AM UTC-7, Bruno Postle wrote:

Bare Pixels

unread,
May 9, 2019, 10:04:26 PM5/9/19
to hugin and other free panoramic software
I absolutely love the result.  What a great tool to patch broken pano.  Thank you so much for creating it

On Thursday, May 9, 2019 at 6:27:57 AM UTC-7, Bruno Postle wrote:

Bruno Postle

unread,
May 11, 2019, 3:54:57 AM5/11/19
to hugin and other free panoramic software
On Thu 09-May-2019 at 15:35 -0700, Bare Pixels wrote:

>C:\>perl -MCPAN -e shell
>cpan> install Panotools::Script::Line::Variable

>Result: FAIL
>Failed 1/22 test programs. 0/212 subtests failed.

>How do I know if I have install Panotools::Script properly?

You didn't, one of the tests failed (I fixed this ages ago, but
haven't uploaded a new release). You can force the installation
like so:

cpan> force install Panotools::Script

BTW, I hope you are approaching this in the spirit of a learning
process. Once you have Panotools::Script installed you will need to
adjust your Windows PATH to include both the Hugin bin folder and
the ImageMagick tools folder. When you then try to run ptomorph it
will complain about a missing IPC::Open2 perl module, but you *may*
be out of luck if installing this asks for a C compiler.

ptomorph is a cute tool, but it is a proof-of-concept that does a
nice job with two photos. This idea needs some work to make it
suitable for everyday use.

--
Bruno

Bare Pixels

unread,
May 11, 2019, 1:08:04 PM5/11/19
to hugin and other free panoramic software
I love learning so far am having fun.  thank you for your guidance

So it seem force instal panotools works.  i installed it at  C:\Perl64\site\lib
Now the next hurdle 'pano_trafo'  LOL LOL

C:\Perl64>ptomorph premorph.pto
'pano_trafo' is not recognized as an internal or external command,
operable program or batch file.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
'pano_trafo' is not recognized as an internal or external command,
operable program or batch file.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1118.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1119.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value in addition (+) at ptomorph line 35.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value in join or string at ptomorph line 38.
Use of uninitialized value $result in scalar chomp at C:/Perl64/site/lib/Panotools/Script.pm line 1138.
Use of uninitialized value $result in split at C:/Perl64/site/lib/Panotools/Script.pm line 1139.
Use of uninitialized value in join or string at ptomorph line 41.
Use of uninitialized value in join or string at ptomorph line 41.
Invalid Parameter - -alpha
Invalid Parameter - -alpha
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Use of uninitialized value in concatenation (.) or string at C:/Perl64/site/lib/Panotools/Script/Line.pm line 82.
Warning: unable to close filehandle GEN8 properly: Invalid argument at ptomorph line 82.
Warning: unable to close filehandle GEN0 properly: Invalid argument at ptomorph line 82.

I didn't do any of these because I don't know how to adjust the Window PATH

BTW, I hope you are approaching this in the spirit of a learning 
process.  Once you have Panotools::Script installed you will need to 
adjust your Windows PATH to include both the Hugin bin folder and 
the ImageMagick tools folder.  When you then try to run ptomorph it 
will complain about a missing IPC::Open2 perl module, but you *may* 
be out of luck if installing this asks for a C compiler. 

 BTW in the end,if this fail, should I try with virtuabox and ubuntu.  not being familiar with linux would ubuntu be a good choice?

Bare Pixels

unread,
May 11, 2019, 1:36:12 PM5/11/19
to hugin and other free panoramic software
BTW this is what it shows when I force instal pnotools


cpan> force install Panotools::Script
Reading 'C:\Perl64\cpan\Metadata'
  Database was generated on Thu, 09 May 2019 05:41:03 GMT
Fetching with LWP:
Reading 'C:\Perl64\cpan\sources\authors\01mailrc.txt.gz'
............................................................................DONE
Fetching with LWP:
Reading 'C:\Perl64\cpan\sources\modules\02packages.details.txt.gz'
  Database was generated on Sat, 11 May 2019 03:55:34 GMT
.............
  New CPAN.pm version (v2.26) available.
  [Currently running version is v2.18]
  You might want to try
    install CPAN
    reload cpan
  to both upgrade CPAN.pm and run the new version without leaving
  the current session.


...............................................................DONE
Fetching with LWP:
Reading 'C:\Perl64\cpan\sources\modules\03modlist.data.gz'
DONE
Writing C:\Perl64\cpan\Metadata
Running install for module 'Panotools::Script'
Checksum for C:\Perl64\cpan\sources\authors\id\B\BP\BPOSTLE\Panotools-Script-0.28.tar.gz ok
Scanning cache C:\Perl64/cpan/build for sizes
..................................................................----------DONE
DEL(1/2): C:\Perl64\cpan\build\Image-ExifTool-11.30-0
DEL(2/2): C:\Perl64\cpan\build\Image-ExifTool-11.30-0.yml
cp lib/Panotools/Script.pm blib\lib\Panotools\Script.pm
cp lib/Panotools/Matrix.pm blib\lib\Panotools\Matrix.pm
cp lib/Panotools/Makefile.pm blib\lib\Panotools\Makefile.pm
cp lib/Panotools/Script/Line/ControlMorph.pm blib\lib\Panotools\Script\Line\ControlMorph.pm
cp lib/Panotools/Makefile/Comment.pm blib\lib\Panotools\Makefile\Comment.pm
cp lib/Panotools/Script/Line/Mode.pm blib\lib\Panotools\Script\Line\Mode.pm
cp lib/Panotools/Script/Line/Mask.pm blib\lib\Panotools\Script\Line\Mask.pm
cp lib/Panotools/Photos.pm blib\lib\Panotools\Photos.pm
cp lib/Panotools/Script/Line/ImageMetadata.pm blib\lib\Panotools\Script\Line\ImageMetadata.pm
cp lib/Panotools/Script/Line/Control.pm blib\lib\Panotools\Script\Line\Control.pm
cp lib/Panotools/Makefile/Rule.pm blib\lib\Panotools\Makefile\Rule.pm
cp lib/Panotools/Makefile/Variable.pm blib\lib\Panotools\Makefile\Variable.pm
cp lib/Panotools/Script/Line.pm blib\lib\Panotools\Script\Line.pm
cp lib/Panotools/Script/Line/Image.pm blib\lib\Panotools\Script\Line\Image.pm
cp lib/Panotools/Script/Line/Output.pm blib\lib\Panotools\Script\Line\Output.pm
cp lib/Panotools/Script/Line/Option.pm blib\lib\Panotools\Script\Line\Option.pm
cp lib/Panotools/Makefile/Utils.pm blib\lib\Panotools\Makefile\Utils.pm
pano_trafo not found, skipping tests...  <================did it get installed ===========================
t/201.pano_trafo.t ...... ok

Test Summary Report
-------------------
t/104.metachars.t     (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: No plan found in TAP output
Files=22, Tests=212,  4 wallclock secs ( 0.23 usr +  0.03 sys =  0.27 CPU)
Result: FAIL
Failed 1/22 test programs. 0/212 subtests failed.
dmake.exe:  Error code 255, while making 'test_dynamic'
  BPOSTLE/Panotools-Script-0.28.tar.gz
  C:\Perl64\site\bin\dmake.exe test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports BPOSTLE/Panotools-Script-0.28.tar.gz
Running make install
Installing C:\Perl64\html\bin\cubic2erect.html
Installing C:\Perl64\html\bin\enblend-mask.html
Installing C:\Perl64\html\bin\enblend-svg.html
Installing C:\Perl64\html\bin\enfuse-mask.html
Installing C:\Perl64\html\bin\entile.html
Installing C:\Perl64\html\bin\erect2cubic.html
Installing C:\Perl64\html\bin\erect2mercator.html
Installing C:\Perl64\html\bin\erect2planet.html
Installing C:\Perl64\html\bin\erect2qtvr.html
Installing C:\Perl64\html\bin\gigastart.html
Installing C:\Perl64\html\bin\gigatile.html
Installing C:\Perl64\html\bin\gmaptemplate.html
Installing C:\Perl64\html\bin\jpeg2qtvr.html
Installing C:\Perl64\html\bin\lens-submit.html
Installing C:\Perl64\html\bin\match-n-shift.html
Installing C:\Perl64\html\bin\nona-mask.html
Installing C:\Perl64\html\bin\nona-svg.html
Installing C:\Perl64\html\bin\pafextract.html
Installing C:\Perl64\html\bin\panostart.html
Installing C:\Perl64\html\bin\process-masks.html
Installing C:\Perl64\html\bin\pto2gpano.html
Installing C:\Perl64\html\bin\pto2mk2.html
Installing C:\Perl64\html\bin\ptoanchor.html
Installing C:\Perl64\html\bin\ptobind.html
Installing C:\Perl64\html\bin\ptocentre.html
Installing C:\Perl64\html\bin\ptochain.html
Installing C:\Perl64\html\bin\ptoclean.html
Installing C:\Perl64\html\bin\ptodouble.html
Installing C:\Perl64\html\bin\ptodummy.html
Installing C:\Perl64\html\bin\ptofill.html
Installing C:\Perl64\html\bin\ptoget.html
Installing C:\Perl64\html\bin\ptohalve.html
Installing C:\Perl64\html\bin\ptoinfo.html
Installing C:\Perl64\html\bin\ptomerge.html
Installing C:\Perl64\html\bin\ptomorph.html
Installing C:\Perl64\html\bin\ptopath.html
Installing C:\Perl64\html\bin\ptoreset.html
Installing C:\Perl64\html\bin\ptoset.html
Installing C:\Perl64\html\bin\ptosort.html
Installing C:\Perl64\html\bin\ptosplit.html
Installing C:\Perl64\html\bin\ptovariable.html
Installing C:\Perl64\html\bin\qtvr2erect.html
Installing C:\Perl64\html\bin\tif2svg.html
Installing C:\Perl64\html\bin\transform-pano.html
Installing C:\Perl64\html\site\lib\Panotools\Makefile.html
Installing C:\Perl64\html\site\lib\Panotools\Matrix.html
Installing C:\Perl64\html\site\lib\Panotools\Photos.html
Installing C:\Perl64\html\site\lib\Panotools\Script.html
Installing C:\Perl64\html\site\lib\Panotools\Makefile\Comment.html
Installing C:\Perl64\html\site\lib\Panotools\Makefile\Rule.html
Installing C:\Perl64\html\site\lib\Panotools\Makefile\Utils.html
Installing C:\Perl64\html\site\lib\Panotools\Makefile\Variable.html
Installing C:\Perl64\html\site\lib\Panotools\Script\Line.html
Installing C:\Perl64\html\site\lib\Panotools\Script\Line\Control.html
Installing C:\Perl64\html\site\lib\Panotools\Script\Line\ControlMorph.html
Installing C:\Perl64\html\site\lib\Panotools\Script\Line\Image.html
Installing C:\Perl64\html\site\lib\Panotools\Script\Line\ImageMetadata.html
Installing C:\Perl64\html\site\lib\Panotools\Script\Line\Mask.html
Installing C:\Perl64\html\site\lib\Panotools\Script\Line\Mode.html
Installing C:\Perl64\html\site\lib\Panotools\Script\Line\Option.html
Installing C:\Perl64\html\site\lib\Panotools\Script\Line\Output.html
Installing C:\Perl64\html\site\lib\Panotools\Script\Line\Panorama.html
Installing C:\Perl64\html\site\lib\Panotools\Script\Line\Variable.html
Installing C:\Perl64\site\lib\Panotools\Makefile.pm
Installing C:\Perl64\site\lib\Panotools\Matrix.pm
Installing C:\Perl64\site\lib\Panotools\Photos.pm
Installing C:\Perl64\site\lib\Panotools\Script.pm
Installing C:\Perl64\site\lib\Panotools\Makefile\Comment.pm
Installing C:\Perl64\site\lib\Panotools\Makefile\Rule.pm
Installing C:\Perl64\site\lib\Panotools\Makefile\Utils.pm
Installing C:\Perl64\site\lib\Panotools\Makefile\Variable.pm
Installing C:\Perl64\site\lib\Panotools\Script\Line.pm
Installing C:\Perl64\site\lib\Panotools\Script\Line\Control.pm
Installing C:\Perl64\site\lib\Panotools\Script\Line\ControlMorph.pm
Installing C:\Perl64\site\lib\Panotools\Script\Line\Image.pm
Installing C:\Perl64\site\lib\Panotools\Script\Line\ImageMetadata.pm
Installing C:\Perl64\site\lib\Panotools\Script\Line\Mask.pm
Installing C:\Perl64\site\lib\Panotools\Script\Line\Mode.pm
Installing C:\Perl64\site\lib\Panotools\Script\Line\Option.pm
Installing C:\Perl64\site\lib\Panotools\Script\Line\Output.pm
Installing C:\Perl64\site\lib\Panotools\Script\Line\Panorama.pm
Installing C:\Perl64\site\lib\Panotools\Script\Line\Variable.pm
Installing C:\Perl64\site\bin\cubic2erect
Installing C:\Perl64\site\bin\cubic2erect.bat
Installing C:\Perl64\site\bin\enblend-mask
Installing C:\Perl64\site\bin\enblend-mask.bat
Installing C:\Perl64\site\bin\enblend-svg
Installing C:\Perl64\site\bin\enblend-svg-gui
Installing C:\Perl64\site\bin\enblend-svg-gui.bat
Installing C:\Perl64\site\bin\enblend-svg.bat
Installing C:\Perl64\site\bin\enfuse-mask
Installing C:\Perl64\site\bin\enfuse-mask.bat
Installing C:\Perl64\site\bin\entile
Installing C:\Perl64\site\bin\entile.bat
Installing C:\Perl64\site\bin\erect2cubic
Installing C:\Perl64\site\bin\erect2cubic.bat
Installing C:\Perl64\site\bin\erect2mercator
Installing C:\Perl64\site\bin\erect2mercator.bat
Installing C:\Perl64\site\bin\erect2planet
Installing C:\Perl64\site\bin\erect2planet.bat
Installing C:\Perl64\site\bin\erect2qtvr
Installing C:\Perl64\site\bin\erect2qtvr-gui
Installing C:\Perl64\site\bin\erect2qtvr-gui.bat
Installing C:\Perl64\site\bin\erect2qtvr.bat
Installing C:\Perl64\site\bin\gigastart
Installing C:\Perl64\site\bin\gigastart.bat
Installing C:\Perl64\site\bin\gigatile
Installing C:\Perl64\site\bin\gigatile.bat
Installing C:\Perl64\site\bin\gmaptemplate
Installing C:\Perl64\site\bin\gmaptemplate.bat
Installing C:\Perl64\site\bin\jpeg2qtvr
Installing C:\Perl64\site\bin\jpeg2qtvr.bat
Installing C:\Perl64\site\bin\lens-submit
Installing C:\Perl64\site\bin\lens-submit.bat
Installing C:\Perl64\site\bin\match-n-shift
Installing C:\Perl64\site\bin\match-n-shift.bat
Installing C:\Perl64\site\bin\nona-mask
Installing C:\Perl64\site\bin\nona-mask.bat
Installing C:\Perl64\site\bin\nona-svg
Installing C:\Perl64\site\bin\nona-svg.bat
Installing C:\Perl64\site\bin\pafextract
Installing C:\Perl64\site\bin\pafextract.bat
Installing C:\Perl64\site\bin\panostart
Installing C:\Perl64\site\bin\panostart.bat
Installing C:\Perl64\site\bin\process-masks
Installing C:\Perl64\site\bin\process-masks-gui
Installing C:\Perl64\site\bin\process-masks-gui.bat
Installing C:\Perl64\site\bin\process-masks.bat
Installing C:\Perl64\site\bin\pto2gpano
Installing C:\Perl64\site\bin\pto2gpano.bat
Installing C:\Perl64\site\bin\pto2mk2
Installing C:\Perl64\site\bin\pto2mk2.bat
Installing C:\Perl64\site\bin\ptoanchor
Installing C:\Perl64\site\bin\ptoanchor.bat
Installing C:\Perl64\site\bin\ptobind
Installing C:\Perl64\site\bin\ptobind.bat
Installing C:\Perl64\site\bin\ptocentre
Installing C:\Perl64\site\bin\ptocentre.bat
Installing C:\Perl64\site\bin\ptochain
Installing C:\Perl64\site\bin\ptochain.bat
Installing C:\Perl64\site\bin\ptoclean
Installing C:\Perl64\site\bin\ptoclean.bat
Installing C:\Perl64\site\bin\ptodouble
Installing C:\Perl64\site\bin\ptodouble.bat
Installing C:\Perl64\site\bin\ptodummy
Installing C:\Perl64\site\bin\ptodummy.bat
Installing C:\Perl64\site\bin\ptofill
Installing C:\Perl64\site\bin\ptofill.bat
Installing C:\Perl64\site\bin\ptoget
Installing C:\Perl64\site\bin\ptoget.bat
Installing C:\Perl64\site\bin\ptohalve
Installing C:\Perl64\site\bin\ptohalve.bat
Installing C:\Perl64\site\bin\ptoinfo
Installing C:\Perl64\site\bin\ptoinfo-gui
Installing C:\Perl64\site\bin\ptoinfo-gui.bat
Installing C:\Perl64\site\bin\ptoinfo.bat
Installing C:\Perl64\site\bin\ptomerge
Installing C:\Perl64\site\bin\ptomerge.bat
Installing C:\Perl64\site\bin\ptomorph
Installing C:\Perl64\site\bin\ptomorph.bat
Installing C:\Perl64\site\bin\ptopath
Installing C:\Perl64\site\bin\ptopath.bat
Installing C:\Perl64\site\bin\ptoreset
Installing C:\Perl64\site\bin\ptoreset.bat
Installing C:\Perl64\site\bin\ptoset
Installing C:\Perl64\site\bin\ptoset.bat
Installing C:\Perl64\site\bin\ptosort
Installing C:\Perl64\site\bin\ptosort.bat
Installing C:\Perl64\site\bin\ptosplit
Installing C:\Perl64\site\bin\ptosplit.bat
Installing C:\Perl64\site\bin\ptovariable
Installing C:\Perl64\site\bin\ptovariable.bat
Installing C:\Perl64\site\bin\ptscluster
Installing C:\Perl64\site\bin\ptscluster.bat
Installing C:\Perl64\site\bin\ptsed
Installing C:\Perl64\site\bin\ptsed.bat
Installing C:\Perl64\site\bin\qtvr2erect
Installing C:\Perl64\site\bin\qtvr2erect-gui
Installing C:\Perl64\site\bin\qtvr2erect-gui.bat
Installing C:\Perl64\site\bin\qtvr2erect.bat
Installing C:\Perl64\site\bin\tif2svg
Installing C:\Perl64\site\bin\tif2svg-gui
Installing C:\Perl64\site\bin\tif2svg-gui.bat
Installing C:\Perl64\site\bin\tif2svg.bat
Installing C:\Perl64\site\bin\transform-pano
Installing C:\Perl64\site\bin\transform-pano.bat
Appending installation info to C:\Perl64\lib/perllocal.pod
  BPOSTLE/Panotools-Script-0.28.tar.gz
  C:\Perl64\site\bin\dmake.exe install  -- OK
Failed during this command:
 BPOSTLE/Panotools-Script-0.28.tar.gz         : make_test NO but failure ignored because 'force' in effect

Bruno Postle

unread,
May 11, 2019, 2:49:02 PM5/11/19
to hugin and other free panoramic software
On Sat 11-May-2019 at 10:08 -0700, Bare Pixels wrote:
> I love learning so far am having fun. thank you for your guidance
>
> So it seem force instal panotools works. i installed it at
> C:\Perl64\site\lib
> Now the next hurdle 'pano_trafo' LOL LOL
>
> C:\Perl64>ptomorph premorph.pto
> 'pano_trafo' is not recognized as an internal or external command,
> operable program or batch file.

'pano_trafo' is a command-line tool that gets installed when you
install Hugin. It is used for querying transform coordinates in a
PTO project, so ptomorph uses it for doing calculations.

>I didn't do any of these because I don't know how to adjust the Window PATH

Somewhere in Windows system settings is a section where you can
change 'environment variables', PATH is one of these.

PATH is a list of places to find software, each entry is separated
by a semi-colon ';'. You need to edit this list and add the folders
where the Hugin and ImageMagick command-line tools can be found.

> BTW in the end,if this fail, should I try with virtuabox and ubuntu. not
> being familiar with linux would ubuntu be a good choice?

(You might be nearly there...) Linux distributions are all pretty
similar, Ubuntu is as good a choice as any.

--
Bruno

Bare Pixels

unread,
May 11, 2019, 10:14:02 PM5/11/19
to hugin and other free panoramic software
Bruno, I want to thank you for sharing ptomorph.  I just love this "cute' little thing.  Also, thank you for taking the time to guide me.  I end up install Ubuntu on VirtualBox and got ptomorh working without a hitch!  I even stitched it using Hugin in Ubuntu.   Bonus is, now I can learn and explore the world of Linux/Ubuntu.   My advice to others, don't bother trying to get it to run on windows.  Virtualbox and Ubuntu is the way to go.  Thank you again Brunno

Bare Pixels

unread,
May 12, 2019, 1:24:54 AM5/12/19
to hugin and other free panoramic software
Bruno, looking at your premorph.pto   I notice you have place all the control point in the foreground.  What did you use to place them points.  I tried doing it by hand and there no details in many area that I can see but somehow you can.  Can you give me a tip please

 

Bruno Postle

unread,
May 12, 2019, 6:17:01 AM5/12/19
to hugi...@googlegroups.com
I picked the points by eye. When there are no details it doesn't matter much exactly where they are. Similarly, with horizontal features like these it is more important to match the edges than to find the exact point on the edges - Bruno

LA Brush

unread,
Jun 2, 2020, 9:15:46 AM6/2/20
to hugin and other free panoramic software


Hi Bruno, 

I love your article on Medium, this is probably my 4th time reading it. Im teaching a class about backdrops within the motion picture industry, and I would like to ask if you're alright with me using your teachings as a topic for class discussion. My name is David Allen I am present on PTGui's google form and now on Hugins although I do not use Hugin often. Additionally if you have anything you would like to add to your original post from medium I would be honored to include it! 


Thank you kindly, 
David  


On Saturday, April 27, 2019 at 2:19:16 PM UTC+2, Bruno Postle wrote:
Hi all, I've been playing around with trying to reproduce some of the perspective effects of artists like Piranesi.

This is a development of the work we did on the Panini projection in Hugin, but although I have some code, this stuff is not a good fit for Hugin as it doesn't result in a general purpose projection, this is why I call it "Piranesi's Perspective Trick".

Anyway, I know there is interest in this sort of thing, so I've written it up here:

https://link.medium.com/LnvCQvqgdW

I have some _very_ clunky code which I used for testing, this of course is available for anyone who wants to see how not to do it ;)

--
Bruno

Bruno Postle

unread,
Jun 2, 2020, 11:41:55 AM6/2/20
to hugi...@googlegroups.com
Hi David, I'm glad you found it useful and interesting, so please feel free to use any of this in teaching materials.

I haven't done any more with Piranesi's perspective trick since, too many other things to do! Though I did add it to a GIMP feature request: https://gitlab.gnome.org/GNOME/gimp/-/issues/191 so anyone who fancies coding a little bit of mathematical algorithm has somewhere to start, I think it would be welcome in GIMP.

--
Bruno

Drop Shop

unread,
Jun 3, 2020, 7:49:18 AM6/3/20
to hugi...@googlegroups.com


Hi Bruno! 

Sorry for my late response, thank you for getting back to me. 

Sounds good I will give credit to your written article if it makes it into some of the teachings I’m putting together. 

Also thank you for the source code, I’m not a developer and couldn’t do that myself, but I have a skilled developer that can! 

Side note: 

Do you know of any place/website where photographers have uploaded their panoramic photography? (Vague question I know)  but specifically, higher resolution photographs whereas either the photographer can be easily contacted if the source imagery wanted to be licensed out. 

I know of hundreds maybe thousands of sites that showcase panoramas of all types, but nothing I’ve seen as a “massive” collection, or where it’s not a blind upload and the original photographer maybe unreachable. 

Does that make sense? 

Speak soon, 

David. 


                       Drop Shop Digital Imaging.            
            "Making the worlds largest images!"   

      
 Television Motion Picture & Entertainment Source                            

Picture

 Please feel free to contact us directly for immediate assistance!


(347)-746-5105  NewYork. 
(818)-961-7805  Los Angeles.
+31.611.507.359  Europe. 
800-464-5523         


The information included in this e-mail is of a confidential nature and is only intended for the addressee. If you are not the intended addressee, any disclosure, copying or distribution is prohibited and may be unlawful. Disclosure to any party other than the addressee, whether inadvertent or otherwise is not intended to waive privilege or confidentiality.

DROP SHOP DIGITAL LLC. 

On Jun 2, 2020, at 5:41 PM, Bruno Postle <br...@postle.net> wrote:

Hi David, I'm glad you found it useful and interesting, so please feel free to use any of this in teaching materials.
--
A list of frequently asked questions is available at: http://wiki.panotools.org/Hugin_FAQ
---
You received this message because you are subscribed to the Google Groups "hugin and other free panoramic software" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hugin-ptx+...@googlegroups.com.

Bruno Postle

unread,
Jun 3, 2020, 8:22:51 AM6/3/20
to hugi...@googlegroups.com
Probably there are other places that I don't know of, but Flickr still exists, photographers are still uploading lots of high quality photos there, including panoramas, and it makes licensing and contacting photographers very straightforward.

--
Bruno

Drop Shop Digital LLC

unread,
Jun 3, 2020, 2:19:27 PM6/3/20
to hugi...@googlegroups.com


Great thanks for the direction Bruno! 

Cheers, and keep up the good work! 

Thank you, 

David 

                       Drop Shop Digital Studios    
            "Making the worlds largest images!"   

                            •Television & Motion Picture’s source for translight backings•

Picture

 Please feel free to contact us directly for immediate assistance!



The information included in this e-mail is of a confidential nature and is only intended for the addressee. If you are not the intended addressee, any disclosure, copying or distribution is prohibited and may be unlawful. Disclosure to any party other than the addressee, whether inadvertent or otherwise is not intended to waive privilege or confidentiality.

DROP SHOP DIGITAL LLC. 

On Jun 3, 2020, at 2:22 PM, Bruno Postle <br...@postle.net> wrote:

Probably there are other places that I don't know of, but Flickr still exists, photographers are still uploading lots of high quality photos there, including panoramas, and it makes licensing and contacting photographers very straightforward.
--
A list of frequently asked questions is available at: http://wiki.panotools.org/Hugin_FAQ
---
You received this message because you are subscribed to the Google Groups "hugin and other free panoramic software" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hugin-ptx+...@googlegroups.com.

Klaus Foehl

unread,
Jun 3, 2020, 3:24:21 PM6/3/20
to hugi...@googlegroups.com

Hi David,

There is wikimedia commons, and there are quite a few panoramics on there.

On the Featured Pictures there used to be a panoramics category as well, but years ago in the prevailing wisdom they abolished it so this single bucket of high quality material there is no more. Panoramics are still there, but one has to trawl now.

Cheers,

Klaus

Drop Shop

unread,
Jun 3, 2020, 3:33:49 PM6/3/20
to hugi...@googlegroups.com


Hey Klaus! 


That’s amazing. 

Thank you. 


                       Drop Shop Digital Imaging.            
            "Making the worlds largest images!"   

      
 Television Motion Picture & Entertainment Source                            

Picture

 Please feel free to contact us directly for immediate assistance!


(347)-746-5105  NewYork. 
(818)-961-7805  Los Angeles.
+31.611.507.359  Europe. 
800-464-5523         


The information included in this e-mail is of a confidential nature and is only intended for the addressee. If you are not the intended addressee, any disclosure, copying or distribution is prohibited and may be unlawful. Disclosure to any party other than the addressee, whether inadvertent or otherwise is not intended to waive privilege or confidentiality.

DROP SHOP DIGITAL LLC. 

On Jun 3, 2020, at 9:24 PM, Klaus Foehl <klaus...@gmail.com> wrote:



Bruno Postle

unread,
Mar 29, 2025, 3:36:53 AM3/29/25
to hugin and other free panoramic software
I reworked this code that reproduces Piranesi's perspective trick into python, and it now remaps images in a reasonable time and works with any reasonable image file format: https://github.com/brunopostle/piranesi

I was pointed to a discussion of this article on hacker news: https://news.ycombinator.com/item?id=43492562

..where I discovered that our Panini projection (you saw it in Hugin first!) is a display option in Unreal engine: https://dev.epicgames.com/documentation/en-us/unreal-engine/panini-projection-in-unreal-engine

-- 
Bruno

Bruno Postle

unread,
Mar 31, 2025, 5:39:31 AM3/31/25
to hugin and other free panoramic software
On Sat, 29 Mar 2025, 08:36 Bruno Postle wrote:

..where I discovered that our Panini projection (you saw it in Hugin first!) is a display option in Unreal engine: https://dev.epicgames.com/documentation/en-us/unreal-engine/panini-projection-in-unreal-engine

Reply all
Reply to author
Forward
0 new messages