diff --git a/src/unwrap.cpp b/src/unwrap.cpp index 635a746..51ad8cc 100644 --- a/src/unwrap.cpp +++ b/src/unwrap.cpp @@ -223,8 +223,21 @@ cv::Mat simpleStich(const std::vector& images) return out(cv::Rect(topLeft, outputSize)); } -cv::Mat stich(const std::vector& images, bool seamAdjust) +cv::Mat stich(std::vector& images, bool seamAdjust) { + for(auto& image : images) + assert(image.image.type() == CV_8UC3 || image.image.type() == CV_8UC1); + + for(auto& image : images) + { + if(image.image.type() == CV_8UC1) + { + cv::Mat colImage; + cv::cvtColor(image.image, colImage, cv::COLOR_GRAY2BGR); + image.image = colImage; + } + } + std::vector masks(images.size()); std::vector corners(images.size()); std::vector sizes(images.size()); @@ -236,7 +249,6 @@ cv::Mat stich(const std::vector& images, bool seamAdjust) sizes[i] = images[i].image.size(); } - if(seamAdjust) { std::vector images32f(images.size()); @@ -264,9 +276,7 @@ cv::Mat stich(const std::vector& images, bool seamAdjust) mb->setNumBands(5); blender->prepare(corners, sizes); for (size_t i = 0; i < images.size(); i++) - { blender->feed(images[i].image, masks[i], corners[i]); - } cv::Mat result; cv::Mat result_mask; blender->blend(result, result_mask); diff --git a/src/uvosunwrap/unwrap.h b/src/uvosunwrap/unwrap.h index f9bacda..0bcc383 100644 --- a/src/uvosunwrap/unwrap.h +++ b/src/uvosunwrap/unwrap.h @@ -44,5 +44,5 @@ bool createRemapMap(const cv::Mat& image, RemapMap& out, const std::vector& images, bool seamAdjust = false); +cv::Mat stich(std::vector& images, bool seamAdjust = false); cv::Mat simpleStich(const std::vector& images);