Code Monkey home page Code Monkey logo

openpano's Introduction

OpenPano

cmu0

Introduction

OpenPano is a panorama stitching program written in C++ from scratch (without any vision libraries). It mainly follows the routine described in the paper Automatic Panoramic Image Stitching using Invariant Features, which is also the one used by AutoStitch.

Installation

We need the following dependencies:

  • gcc >= 5, clang >= 10 or visual studio >= 2015. CMake >= 3.20
  • Eigen
  • libjpeg (optional, if you only need png format)
  • FLANN (already included in the repository, slightly modified)
  • CImg (optional. already included in the repository)

Eigen, CImg and FLANN are header-only, to simplify the compilation on different platforms. CImg and libjpeg are only used to read and write images, so you can easily get rid of them.

On ArchLinux, install dependencies by: sudo pacman -S gcc sed cmake make libjpeg eigen

On Ubuntu, install dependencies by: sudo apt install build-essential sed cmake libjpeg-dev libeigen3-dev

Compile:

Linux / OSX / WSL (bash on windows)

Use cmake (a good default to try):

$ cmake -B build && make -C build
# Binary will be found at ./build/src/image-stitching

or, use make (more customizable. You can modify Makefile when you run into problems.):

$ make -C src
# Binary will be found at ./src/image-stitching

The default clang on OSX doesn't contain openmp support. You may need gcc or different clang. See #16.

Windows (for VS2015)

  • Install cmake, VS2015
  • Set environment variable Eigen3_DIR to {YOUR_EIGEN3_DIRECTORY}/eigen3/cmake.
  • Open Visual Studio Developer Command Prompt.
  • cd path/to/OpenPano
  • cmake .
  • Open the VS2015 project and compile the project
  • copy config.cfg to the directory containing image-stitching.exe
  • The author have never used Visual Studio and this windows build process may not work for you. Feel free to submit PR to improve the build process.

Usage

$ ./image-stitching <file1> <file2> ...

The output file is out.jpg. You can play with the example data to start with.

Before dealing with very large images (4 megapixels or more), it's better to manually downscale them to save time.

In cylinder/translation mode, the input file names need to have the correct order.

Configuration:

The program expects to find the config file config.cfg in the working directory. Three modes are available (set/unset them in the top of the config file):

  • cylinder mode. Requirements:

    • You stay at the same spot and only turn left (or right) when taking the images (as is usually done), no translations or other type of rotations allowed.
    • Images are taken with the same camera, with a known FOCAL_LENGTH set in config.
    • Images are given in the left-to-right order. (I might fix this in the future)
  • camera estimation mode. Requirements:

    • You stay at the same spot when taking the images, and can turn your camera left-right or up-down.
    • Don't use too few images.
    • It runs slower because it needs to perform pairwise matches.
  • translation mode. Simply stitch images together by affine transformation. Requirements:

    • Camera performs pure translation.
    • The images are roughly at the same depth.
    • Input images are ordered according to the translation movement.

Some options you may care:

  • FOCAL_LENGTH: focal length of your camera in 35mm equivalent. Only useful in cylinder mode.
  • ORDERED_INPUT: whether input images are ordered sequentially. has to be 1 in CYLINDER and TRANS mode.
  • CROP: whether to crop the final image to avoid irregular white border.

Other parameters are quality-related. The default values are generally good for images with more than 0.7 megapixels. If your images are too small and cannot produce satisfactory results, it might be better to resize your images rather than tune the parameters.

Zijing Apartment in Tsinghua University: dorm

"Myselves": myself

Carnegie Mellon University from 38 images apple

Newell-Simon Hall in CMU (this one is hard because objects are closer): nsh

A full-view pano built from UAV images: uav

For more examples, see results.

Speed & Memory

Tested on Intel Core i7-6700HQ, with ESTIMATE_CAMERA mode:

  • 11 ordered images of size 600x400: 3.2s.
  • 13 ordered images of size 1500x1112: 6s.
  • 38 unordered images of size 1300x867 (high vertical FOV): 51s.

Memory consumption is known to be huge with default libc allocator. Simply using a modern allocator (e.g. tcmalloc, jemalloc) can help a lot. Also, setting LAZY_READ to 1 can save memory at the cost of a minor slow down.

Peak memory in bytes (assume each input has the same w & h):

  • Without LAZY_READ option: max(finalw * finalh * 12, #photos * w * h * 12 + #photos * #matched_pairs * 96 + #keypoints * 520)
  • With LAZY_READ option: max(finalw * finalh * 16, #threads * w * h * 12, #photos * #matched_pairs * 96 + #keypoints * 520)

Algorithms

  • Features: SIFT
  • Transformation: use RANSAC to estimate a homography or affine transformation.
  • Optimization: focal estimation, bundle adjustment, and some straightening tricks.

For details, see my blog post.

Quality Guidelines

To get the best stitching quality:

  • While rotating the camera for different shots, try to keep the position of camera lens static.
  • Keep the exposure parameters unchanged.
  • Do not shoot on moving objects.
  • Objects far away will stitch better.
  • The algorithm doesn't work well with wide-angle cameras where images are distorted heavily. Camera parameters are needed to undistort the images.

TODOs

  • Github Actions for macOS and Windows
  • apply pairwise matching for translation mode as well
  • run bundle adjustment on sphere lens instead of perspective lens
  • improve feature detector and matching
  • use LAZY_READ & 1 byte image in both blender to reduce peak memory
  • clean up use of copies of ImageRef
  • faster gaussian blur kernel
  • port some hotspot (e.g. dist.cc) to neon
  • support read/write EXIF metadata to:
    • get focal length, distortion, etc
    • allow pano to be viewed on Facebook
  • python bindings

openpano's People

Contributors

chenxiaotemp avatar idanco avatar jiapei100 avatar libmw avatar mikeseven avatar ppwwyyxx avatar sisco0 avatar zhudaoruyi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openpano's Issues

Removing dependencies

How to remove the Magick++ & Boost MTL dependencies to make the project more portable, so can be used in other platforms such as Android?

thanks

How to run the CYLINDER mode

hi, thanks for your shared panarama-stitching

when I run the image-stitching as followed:

wqy@wqy-Precision-T3600:~/Desktop/panorama-master/src$ ./image-stitching ../data/apartment/small-01.jpg ../data/apartment/small-02.jpg
[[email protected]:271] Run with camera estimation mode.
sh: 1: convert: not found
sh: 1: gm: not found
sh: 1: convert: not found
sh: 1: gm: not found
sh: 1: convert: not found
sh: 1: gm: not found

[CImg] *** CImgIOException *** [instance(0,0,0,0,(nil),non-shared)] CImg::load(): Failed to recognize format of file '../data/apartment/small-01.jpg'.
terminate called after throwing an instance of 'cimg_library::CImgIOException'
what(): [instance(0,0,0,0,(nil),non-shared)] CImg::load(): Failed to recognize format of file '../data/apartment/small-01.jpg'.
Aborted (core dumped)

So how do I use it?
Thanks very much!

Compile Errors

@ppwwyyxx
hello,thanks for your code. I use cmake to generate the program. But when I compile it on the VS2013. Some errors have occurred. Here are some bugs.

1

Look forward to your reply as soon as possible。
Thanks again.

Fisheye

How to specify that the pictures have been taken with a fisheye lens ?

multiband blending result in some highlight spot

Hi,
I tried to perform multiband blending while stitching image using opencv. but sometime the result got weird, the stitched image got some highlight spot (as image below). And the spot seems occurred near the cross of seam. Is there any idea what is the reason lead to this effect.

multiband

Miller

Need some help installing this on windows with VS2015

I'm having some problems with the installation of this package in windows 7 with vs2015...

When I run cmake . the installation fail because it can't find libjpeg... This wasn't optional??

Which version of the Eigen lib should I use?
Because I've downloaded some versions of Eigen3 and all of them are failing on openpano build... The eigen is not coming with some Eigen3Config.cmake or eigen3-config.cmake...

One more question: libjpeg wasn't optional? My build is failing on this too

run into serious ghost diference

Thanks for the open code. But I ran into some serious ghost problem.
My running result always has ghost shadows. I tried some different test data captured from my android phone camera. They all do the same!
But your test data works fine.
Please tell me how can I fix it or optimize it?

Confirming the calculation of Gaussian Blur

When checking the algorithm of Gaussian Blur, I am confused by the padding border by rows in the implementation.

When padding by rows, why the index is [center+j], instead of [w + j]?

// by rows  
cur_line[center + j] = v0;
cur_line[w + j] = v0;

Padding by columns

				// pad the border with border value
				T v0 = cur_line[0];
				for (int i = 1; i <= center; i ++)
					cur_line[-i] = v0;
				v0 = cur_line[h - 1];
				for (int i = 0; i < center; i ++)
					cur_line[h + i] = v0;

Padding by rows

			// apply to rows
			REP(i, h) {
				T *dest = ret.ptr(i);
				memcpy(cur_line, dest, sizeof(T) * w);
				{	// pad the border
					T v0 = cur_line[0];
					for (int j = 1; j <= center; j ++)
						cur_line[-j] = v0;
					v0 = cur_line[w - 1];
					for (int j = 0; j < center; j ++)
						cur_line[center + j] = v0;
}

Compile issues in vs 2015

Thanks for sharing,but there are some errors when I compile your project in vs 2015.I appreciate you a lot if you can do me a favor!

Ghost and Colour difference

HI
Thank you for your opened code. I used your code for stitching image, and Imet the problem of ghost and color difference.
How i should do ?
thanks

PNG error

When running stitching on the taken 72 png pictures by:
./image-stitching 1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png 11.png 12.png 13.png 14.png 15.png 16.png 17.png 18.png 19.png 20.png 21.png 22.png 23.png 24.png 25.png 26.png 27.png 28.png 29.png 30.png 31.png 32.png 33.png 34.png 35.png 36.png 37.png 38.png 39.png 40.png 41.png 42.png 43.png 44.png 45.png 46.png 47.png 48.png 49.png 50.png 51.png 52.png 53.png 54.png 55.png 56.png 57.png 58.png 59.png 60.png 61.png 62.png 63.png 64.png 65.png 66.png 67.png 68.png 69.png 70.png 71.png 72.png
[[email protected]:245] Run with camera estimation mode.

This error message occurs:
error: png encoder error 28: incorrect PNG signature, it's no PNG or corrupted

I wonder if there is a requirement of PNG files.

How can only be modified to achieve real-time stitching

Hi ...
For the time I look at your code ...There are some doubts can you help? I have readed your blog,I found the trans mode for onebyone stitching is better,at your blog you said it only applicable when camera do pure translation,but when I used some rotate pictures, It sames work good, because of it?(The skew factor in homography (H31,H32) cannot be too large. Their absolute values are usually less than 0.002.) can i understand for some slight rotate it can work,It is the real-time first... Thank you (I had used GPU accelerate,there are only 100mills for two 600*400 pictures)

Splicing error

@ppwwyyxx
Thanks for your code. I used my own picture to stitch, but there were some problems. There are overlapping areas on the left and right sides of the spliced picture. Here is the picture:

outresult1

The area drawn on both sides of the red lines is the coincidence area. How to solve the panorama of the end of the region coincidence problem?

Image Quality and Size Warnings

Thank you for open sourcing this - the stitching performance is really amazing!
However, as I was testing this software, I noticed several things that I didn't really understand that I hope you could clarify.

Background: I was using full sized images produced by my UAV which are generally about 5.5-6 Mb each. I have 19 images taken systematically (60 deg apart horizontally and 30 degrees apart vertically) to produce a 360 spherical panorama. I am testing on a 4GB RAM Ubuntu.

  1. Is the final pano's image quality reduced to save memory? The files are a lot smaller than the ones I get when using Autostitch or PtGUI.
  2. I am getting some pretty random "error: Result too large. Something must be wrong!" messages, accompanied by some unusual projection ranges.

If I feed a set of 6 images taken horizontally, it successfully produces the 1st image below. If I feed the second set of 6 images taken with my drone's gimbal pitch down at 30 deg, it successfully produces the 2nd image below. But if I try to feed all twelve images to it, it gives me "error: Result too large. Something must be wrong!" So I thought maybe this is a memory issue. However, I don't think that is the case because then I tried to stitch the images vertically in sets of 3. The 1st set successfully gives the 3rd image below, while the second set encountered that same "result too large" error.
6a1x
6a2x-smaller
31x

This is selected parts of a sample run that got the message

[[email protected]:271] Run with camera estimation mode.
[[email protected]:19] Image 2 has 2668 features
[[email protected]:19] Image 0 has 2380 features
[[email protected]:19] Image 1 has 3719 features

...

Estimate Camera: 19.387000 milliseconds.
[[email protected]:59] Using projection method: 1
[update_proj_range@stitcher_image.cc:81] Range: (-0.796360,-0.391022)~(0.765416,0.947269)
[update_proj_range@stitcher_image.cc:81] Range: (-1.178559,0.121779)~(1.211932,3.385148)
[update_proj_range@stitcher_image.cc:81] Range: (0.000134,0.589339)~(6.282658,130.113268)
projmin:-1.17856 -0.391022projmax6.28266 130.113
error: Result too large. Something must be wrong!

Thank you again for your help and your awesome work!

Build issues in VS 2013

I am a beginner in coding. So I just try to write my problems as details as I can. Thanks for your patience.

I installed VS2013 and CMake in my computer and downloaded Eigen3 from the official website. Then I try to build this project with CMake.

image
In README.MD, it is said that 'Set environment variable EIGEN3_INCLUDE_DIR so that ${EIGEN3_INCLUDE_DIR}/Eigen/Dense exists' But what I can only find is just 'Eigen3_DIR'. Do I need to click 'Add Entry' button to add this variable?

If so, what should I fill in this entry? Actually, I built Eigen3 from the source files downloaded from website. But in the include directory, there is another folder.
image
The *.h files seems in below files
image
So what directory I should add?

My second question is that how to add jpeg support to this project. Just click 'Add Entry' to add JPEG_INCLUDE_DIR and JPEG_LIBRARY? or e.g. C:\jpeg-9a\jpeg.lib

My third question is If I use this, how can I cite this work. Just cite the this website?
Thanks again.

popen/pclose was not declared

I am trying to build this in cygwin. I have gotten stuck at the errors of both popen and pclose was not declared in this scope. This is within the CImg.h class.

Any ideas?

What to do when trees are not connected properly?

I have a set of photos that form a spherical image. I've tried to make a 360 image (spherical), which works fine in Image Composite Editor (from Microsoft).

However, when I try to create a spherical image with OpenPano I get the following message:

error: Found a tree of size 12!=14, image 5 12  are not connected well!

Which leads me to believe it cannot match a neighboring image to another image? Are there any config options I can play with to make this work?

Edit: Maybe this helps; an important detail is that I created images that overlap for a large part.

Fuzzy image output with camera moverment

Excuse me. I have a question of the robustness of the algorithm. If I keep the camera center fixed, there's no ghost in the output image. But if I move the camera, then ghost will probabaly appear. Do you have solution on this problem?

fix the stitch parameter

Thanks for your share!
i have run my images successfully configured with the mode CYLINDER which is better than mode ESTIMATE_CAMERA. i want to fix the stitch parameter in order that the following image sets stitch with the same parameter and output the same panorama size.
Would you like to tell me how to get the stitch parameter with the mode CYLINDER ?
Thanks!

difference between CYLINDERand ESTIMATE_CAMERA

I only know that CYLINDER require the order input and generate the better panorama and also
cost the longer time.If not right, please correct!
Could you please explain difference between CYLINDER and ESTIMATE_CAMERA in principle?
Thanks!

Motion model with both translation and rotation

Hi,

is it possible to use this app for stitching aerial images taken with UAV to produce map-like panoramas (or mosaics, whichever is the right word).
I tried with OpenCV, but that's not possible because it only uses model with pure rotation. Since this model can also use translation, is it possible to combine those two?

Thanks!

Compilation problems about cimg

Hello, thank you very much for your code
I had the following error during compilation
image
The compilation environment is VS2015. Do you have any good solutions?Is it still needed?

Compile for Android

Excuse me. I would like to compile the OpenPano project on android platform. Do you think I have to rewrite the whole part of image reading?

这是什么问题 能帮我看看吗

hello,ppwwyyxx
I yet installed libjpeg,but when i run it,there some questions;
root@ubuntu:/home/tirvideo/panorama-master/panorama-master/src# ./image-stitching
bash: In the unexpected "<" syntax error near
how can i solve it?
thank you
best wishes

images not match

Hi,thanks for your kind to share the code. it makes good quality and amzing speed when using the example data,but it always report images not match issue when using images that captrued by my phone, though the images have overlap area. what can i set for this issue?

Help about the memory utilization

I test the panorama to get my UAV images stitch, but the panorama seems memory guzzler.
Bellow are the jpg files I used in the test

Buggy while building

Hi:

In file included from ......OpenPano/src/feature/feature.hh:10:0,
from ......OpenPano/src/feature/matcher.hh:8,
from ......OpenPano/src/feature/matcher.cc:7:
......OpenPano/src/./feature/dist.hh: In instantiation of ‘float pano::L2SSE::operator()(Iterator1, Iterator2, size_t, pano::L2SSE::ResultType) const [with Iterator1 = float*; Iterator2 = double*; size_t = long unsigned int; pano::L2SSE::ResultType = float]’:
/usr/include/flann/algorithms/kmeans_index.h:586:45: required from ‘void flann::KMeansIndex::computeClustering(flann::KMeansIndex::NodePtr, int*, int, int) [with Distance = pano::L2SSE; flann::KMeansIndex::NodePtr = flann::KMeansIndexpano::L2SSE::Node*]’
/usr/include/flann/algorithms/kmeans_index.h:344:26: required from ‘void flann::KMeansIndex::buildIndexImpl() [with Distance = pano::L2SSE]’
......OpenPano/src/feature/matcher.cc:146:1: required from here
......OpenPano/src/./feature/dist.hh:29:31: error: cannot convert ‘double*’ to ‘const float*’ for argument ‘2’ to ‘float pano::euclidean_sqr(const float*, const float*, size_t, float)’
return pano::euclidean_sqr(a, b, size, worst_dist);
^
CMakeFiles/image-stitching.dir/build.make:206: recipe for target 'CMakeFiles/image-stitching.dir/feature/matcher.cc.o' failed
make[2]: *** [CMakeFiles/image-stitching.dir/feature/matcher.cc.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/image-stitching.dir/all' failed
make[1]: *** [CMakeFiles/image-stitching.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Met the above bug during building....

Suggestions?

Pei

The output of image is bit blurry

I notices the text and some places in image are bit blurry.....Can you suggest me what is causing it ? any settings? in config file I tried to change few parameters but did not work.....

I captured images according to instructions....The overall stitching is good but the image is bit blur specially text...

I tried the opencv stitcher it sometimes fails to stitch but the quality is very good ......

Need Advice on changes need to be done to stitch these photos

Hi,

I have captured some photos keeping exposure locked and keeping focal point of the mobile camera constant using a stand. However, I am not able to stitch these using OpenPano but no success even though I followed all the quality guidelines. However when I stitched them using AutoStitch by M. Brown himself, It was very nicely and seamlessly stitched.
http://matthewalunbrown.com/autostitch/autostitch.html

You can find my images from the following link:
https://drive.google.com/drive/folders/0B_VmUX1-eLurS2RIQU5rcFJTT0k?usp=sharing

Can you kindly suggest the changes needed for stitching these set of images. Images have metadata in them too.

I can't compile panorama

I'm in a Debian stable system. I have installed magick++ headers (libmagick++-dev) and this is the out when I try to compile:

$ make
bash: Magick++-config: no se encontró la orden
[dep] panorama.cc ...
bash: Magick++-config: no se encontró la orden
[dep] filter.cc ...
bash: Magick++-config: no se encontró la orden
[dep] utils.cc ...
bash: Magick++-config: no se encontró la orden
[dep] matcher.cc ...
bash: Magick++-config: no se encontró la orden
[dep] main.cc ...
bash: Magick++-config: no se encontró la orden
[dep] cylinder.cc ...
bash: Magick++-config: no se encontró la orden
[dep] matrix.cc ...
bash: Magick++-config: no se encontró la orden
[dep] config.cc ...
bash: Magick++-config: no se encontró la orden
[dep] sift.cc ...
bash: Magick++-config: no se encontró la orden
[dep] color.cc ...
bash: Magick++-config: no se encontró la orden
[dep] image.cc ...
bash: Magick++-config: no se encontró la orden
[dep] planedrawer.cc ...
bash: Magick++-config: no se encontró la orden
[dep] debugutils.cc ...
bash: Magick++-config: no se encontró la orden
[dep] transformer.cc ...
bash: Magick++-config: no se encontró la orden
[dep] keypoint.cc ...
bash: Magick++-config: no se encontró la orden
[cc] keypoint.cc ...
In file included from include/sift.hh:8:0,
from include/keypoint.hh:8,
from keypoint.cc:6:
include/image.hh:9:22: fatal error: Magick++.h: No existe el fichero o el directorio
#include <Magick++.h>
^
compilation terminated.
make: *** [obj/keypoint.o] Error 1

What could be the problem. Why it doesn't find magick++ dependencies?

clang: error: unsupported option '-fopenmp'

Hi, thanks for this great work.

I noticed it doesn't compile on OSX (using clang), "make" gives these errors:

[dep] third-party/lodepng/lodepng.cc ...
clang: error: unsupported option '-fopenmp'
[dep] stitch/warp.cc ...
clang: error: unsupported option '-fopenmp'
[dep] stitch/transform_estimate.cc ...
clang: error: unsupported option '-fopenmp'
[dep] stitch/stitcherbase.cc ...
clang: error: unsupported option '-fopenmp'

...and so on.

Compiling with gcc on Ubuntu (and probably OSX if installed gcc) works ok.

Any ideas what to fix in the makefile for clang?

Binaries for windows

Is there any way I can get binaries for windows ? I could not compile it myself.

Panoramic video of camera array

Hi,

This is not an issue, but I thought it would be good if this repository contains panoramic video of mutiple cameras.

Best

Documentation doesn't mention ImageMagick

Hello,

When doing a fresh install attempts to run ./image-sticher fail with the below error, this can be rectified by installing 'imagemagick' (i.e. sudo apt install imagemagick).

$ ./image-stitching medium01.jpg medium02.jpg medium03.jpg

[[email protected]:252] Run with camera estimation mode.
sh: 1: sh: 1: sh: 1: convert: not found
./convert: not found
./convert: not found
sh: 1: gm: not found
sh: 1: gm: not found
sh: 1: gm: not found
sh: 1: convert: not found
sh: 1: convert: not found
sh: 1: convert: not found
sh: 1: gm: not found
sh: 1: gm: not found
sh: 1: gm: not found
sh: 1: convert: not found
sh: 1: convert: not found
sh: 1: convert: not found
sh: 1: gm: not found

[CImg] *** CImgIOException *** [instance(0,0,0,0,(nil),non-shared)] CImg::load(): Failed to recognize format of file 'medium02.jpg'.
sh: 1: gm: not found
terminate called after throwing an instance of 'cimg_library::CImgIOException'

[CImg] *** CImgIOException *** [instance(0,0,0,0,(nil),non-shared)] CImg::load_pnm(): PNM header not found in file '(FILE*)'.
what(): [instance(0,0,0,0,(nil),non-shared)] CImg::load(): Failed to recognize format of file 'medium02.jpg'.
sh: 1: gm: not found
Aborted (core dumped)

Thank you for releasing this software, it's proved a great tool for me to learn.

Regards

Failed using TRANS mode

hi,
I always got this error while using the TRANS mode : "assertion "lu.isInvertible()" failed, in inverse". I am sure that the images has only translate movement, what could be the problem ? is there any advice?

Miller

Images Matched, then now seen as unmatching

I was able to stitch these two images together, using Translation mode and Ordered Input,

5

6

## This successfully gave me out.jpg at first...

and then I ran the program again anding the images don't match! I didn't change anything between runs!

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.