gpt4 book ai didi

opencv - OpenCV MultiBandBlender无法正常工作

转载 作者:行者123 更新时间:2023-12-02 16:21:44 26 4
gpt4 key购买 nike

我尝试将图像与MultiBandBlender混合成全景图,但返回黑色全景图。但是FeatherBlender可以正常工作。我做错了什么?

blendImages(const std::vector<cv::Point> &corners, std::vector<cv::Mat> images)
{
std::vector<cv::Size> sizes;
for(int i = 0; i < images.size(); i++)
sizes.push_back(images[i].size());
float blend_strength = 5;
cv::Size dst_sz = cv::detail::resultRoi(corners, sizes).size();
float blend_width = sqrt(static_cast<float>(dst_sz.area())) * blend_strength / 100.f;
cv::Ptr<cv::detail::Blender> blender = cv::detail::Blender::createDefault(cv::detail::Blender::MULTI_BAND);
//cv::detail::FeatherBlender* fb = dynamic_cast<cv::detail::FeatherBlender*>(blender.get());
//fb->setSharpness(1.f/blend_width);
cv::detail::MultiBandBlender* mb = dynamic_cast<cv::detail::MultiBandBlender*>(blender.get());
mb->setNumBands(static_cast<int>(ceil(log(blend_width)/log(2.)) - 1.));
blender->prepare(corners, sizes);
for(int i = 0; i < images.size(); i++)
{
cv::Mat image_s;
images[i].convertTo(image_s, CV_16SC3);
blender->feed(image_s, cv::Mat::ones(image_s.size(), CV_8UC1), corners[i]);
}
cv::Mat pano;
cv::Mat panoMask = cv::Mat::ones(dst_sz, CV_8UC1);
blender->blend(pano, panoMask);
return pano;
}

最佳答案

三种可能的原因:

  • 尝试将所有image_s和掩码保留在 vector 中,并以以下结构进行订阅:
  • for (int i = 0; i < images_s.size(); ++i)
    blender->feed(images_s[i], masks[i], corners[i]);
  • 在混合之前,请勿将panoMask初始化为一个。
  • 确保角点定义正确
  • 关于opencv - OpenCV MultiBandBlender无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31319786/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com