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));
|
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::Mat> masks(images.size());
|
||||||
std::vector<cv::Point> corners(images.size());
|
std::vector<cv::Point> corners(images.size());
|
||||||
std::vector<cv::Size> sizes(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();
|
sizes[i] = images[i].image.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(seamAdjust)
|
if(seamAdjust)
|
||||||
{
|
{
|
||||||
std::vector<cv::UMat> images32f(images.size());
|
std::vector<cv::UMat> images32f(images.size());
|
||||||
@ -264,9 +276,7 @@ cv::Mat stich(const std::vector<RemapedImage>& images, bool seamAdjust)
|
|||||||
mb->setNumBands(5);
|
mb->setNumBands(5);
|
||||||
blender->prepare(corners, sizes);
|
blender->prepare(corners, sizes);
|
||||||
for (size_t i = 0; i < images.size(); i++)
|
for (size_t i = 0; i < images.size(); i++)
|
||||||
{
|
|
||||||
blender->feed(images[i].image, masks[i], corners[i]);
|
blender->feed(images[i].image, masks[i], corners[i]);
|
||||||
}
|
|
||||||
cv::Mat result;
|
cv::Mat result;
|
||||||
cv::Mat result_mask;
|
cv::Mat result_mask;
|
||||||
blender->blend(result, 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);
|
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);
|
cv::Mat simpleStich(const std::vector<RemapedImage>& images);
|
||||||
|
Reference in New Issue
Block a user