From: <st...@us...> - 2009-09-18 16:25:44
|
Revision: 4452 http://hugin.svn.sourceforge.net/hugin/?rev=4452&view=rev Author: stativ Date: 2009-09-18 16:25:37 +0000 (Fri, 18 Sep 2009) Log Message: ----------- Handle I/O in hugin_hdrmerge better. Now it should be possible to load and save all types of HDR images supported by VIGRA. Modified Paths: -------------- hugin/branches/gsoc2009_deghosting/src/tools/hugin_hdrmerge.cpp Modified: hugin/branches/gsoc2009_deghosting/src/tools/hugin_hdrmerge.cpp =================================================================== --- hugin/branches/gsoc2009_deghosting/src/tools/hugin_hdrmerge.cpp 2009-09-18 15:54:20 UTC (rev 4451) +++ hugin/branches/gsoc2009_deghosting/src/tools/hugin_hdrmerge.cpp 2009-09-18 16:25:37 UTC (rev 4452) @@ -94,7 +94,11 @@ vigra::ImageImportInfo info(inputFiles[i].c_str()); img->resize(info.size()); weight->resize(info.size()); - vigra::importImageAlpha(info, vigra::destImage(*img), destImage(*weight)); + if (info.numBands() == 4) { + importImageAlpha(info, destImage(*img), destImage(*weight)); + } else { + importImage(info, destImage(*img)); + } images.push_back(img); weightImages.push_back(weight); } @@ -150,16 +154,15 @@ for(unsigned i = 0; i < inputFiles.size(); i++) { ImageImportInfo inputInfo(inputFiles[i].c_str()); FRGBImage tmpImg(inputInfo.size()); - BImage tmpMask(inputInfo.size()); //load image - importImageAlpha(inputInfo, destImage(tmpImg), destImage(tmpMask)); + if (inputInfo.numBands() == 4) { + BImage tmpMask(inputInfo.size()); + importImageAlpha(inputInfo, destImage(tmpImg), destImage(tmpMask)); + } else { + importImage(inputInfo, destImage(tmpImg)); + } - //combine mask with weight - /*combineTwoImages(srcImageRange(tmpMask), - srcImage(*(weights[i])), - destImage(tmpMask), Arg1() * Arg2());*/ - //combine with weight combineTwoImages(srcImageRange(tmpImg), srcImage(*(weights[i])), destImage(tmpImg), Arg1() * Arg2()); @@ -283,8 +286,12 @@ } ImageExportInfo exinfo(outputFile.c_str()); exinfo.setPixelType("FLOAT"); - BImage alpha(output.width(), output.height(), 255); - exportImageAlpha(srcImageRange(output), srcImage(alpha), exinfo); + if (strcmp(exinfo.getFileType(),"HDR")) { + exportImage(srcImageRange(output), exinfo); + } else { + BImage alpha(output.width(), output.height(), 255); + exportImageAlpha(srcImageRange(output), srcImage(alpha), exinfo); + } } else if (mode == "avg") { // apply weighted average functor with // heuristic to deal with pixels that are overexposed in all images @@ -303,8 +310,12 @@ } ImageExportInfo exinfo(outputFile.c_str()); exinfo.setPixelType("FLOAT"); - BImage alpha(output.width(), output.height(), 255); - exportImageAlpha(srcImageRange(output), srcImage(alpha), exinfo); + if (strcmp(exinfo.getFileType(),"HDR")) { + exportImage(srcImageRange(output), exinfo); + } else { + BImage alpha(output.width(), output.height(), 255); + exportImageAlpha(srcImageRange(output), srcImage(alpha), exinfo); + } } else { std::cerr << "Unknown merge mode, see help for a list of possible modes" << std::endl; return 1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |