allow blending sticher to work with grayscale images
This commit is contained in:
@ -223,8 +223,21 @@ cv::Mat simpleStich(const std::vector<RemapedImage>& images)
|
||||
return out(cv::Rect(topLeft, outputSize));
|
||||
}
|
||||
|
||||
cv::Mat stich(const std::vector<RemapedImage>& images, bool seamAdjust)
|
||||
cv::Mat stich(std::vector<RemapedImage>& 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<cv::Mat> masks(images.size());
|
||||
std::vector<cv::Point> corners(images.size());
|
||||
std::vector<cv::Size> sizes(images.size());
|
||||
@ -236,7 +249,6 @@ cv::Mat stich(const std::vector<RemapedImage>& images, bool seamAdjust)
|
||||
sizes[i] = images[i].image.size();
|
||||
}
|
||||
|
||||
|
||||
if(seamAdjust)
|
||||
{
|
||||
std::vector<cv::UMat> images32f(images.size());
|
||||
@ -264,9 +276,7 @@ cv::Mat stich(const std::vector<RemapedImage>& 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);
|
||||
|
@ -44,5 +44,5 @@ bool createRemapMap(const cv::Mat& image, RemapMap& out, const std::vector<Detec
|
||||
|
||||
RemapedImage applyRemap(const cv::Mat& image, const RemapMap &map);
|
||||
|
||||
cv::Mat stich(const std::vector<RemapedImage>& images, bool seamAdjust = false);
|
||||
cv::Mat stich(std::vector<RemapedImage>& images, bool seamAdjust = false);
|
||||
cv::Mat simpleStich(const std::vector<RemapedImage>& images);
|
||||
|
Reference in New Issue
Block a user