当前位置: 首页 > news >正文

OpenCV图像拼接(7)根据权重图对源图像进行归一化处理函数normalizeUsingWeightMap()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

cv::detail::normalizeUsingWeightMap 是 OpenCV 中用于图像拼接细节处理的一个函数。它根据权重图对源图像进行归一化处理,通常用于图像拼接或融合过程中,以确保不同图像之间的平滑过渡。

原型

void cv::detail::normalizeUsingWeightMap 	
(
 	InputArray  	weight,
	InputOutputArray  	src 
)

参数

  • InputArray weight
    类型: 输入数组(通常是 Mat 类型)
    描述: 权重图,它定义了源图像中每个像素的重要性或贡献度。权重图通常是一个单通道浮点类型的图像 (CV_32FC1),其尺寸与 src 相同。在这个图像中,较高的值表示对应的像素在最终合成图像中有更高的重要性或优先级。权重图可以通过多种方式生成,例如使用 cv::detail::createWeightMap 函数。

  • InputOutputArray src
    类型: 输入输出数组(通常是 Mat 类型)
    描述: 需要根据权重图进行归一化处理的源图像。在调用此函数之前,src 应该具有特定的数据类型,即三通道16位短整型 (CV_16SC3),如错误信息所指出。这个图像将根据提供的权重图进行调整,以实现不同图像间的平滑过渡。处理后的图像会直接修改原 src 图像数据。

代码示例

#include <opencv2/opencv.hpp>
#include <opencv2/stitching/detail/blenders.hpp>  // 包含正确的头文件

using namespace cv;
using namespace cv::detail;

int main()
{
    // 加载或创建你的源图像 src 和权重图 weight
    Mat src = imread( "/media/dingxin/data/study/OpenCV/sources/images/stich1.png", IMREAD_COLOR );  // 使用适当标志加载图片
    if ( src.empty() )
    {
        std::cerr << "无法加载图像,请检查路径!\n";
        return -1;
    }

    // 将 src 转换为 CV_16SC3 类型
    src.convertTo( src, CV_16SC3 );

    // 创建一个与 src 同尺寸的单通道浮点型Mat对象作为权重图
    Mat weight = Mat( src.size(), CV_32FC1 );
    // 初始化 weight 的具体数值应基于实际应用情况来填充
    // 这里为了示例,简单地将其中心区域设置为1,其他地方为0
    circle( weight, Point( src.cols / 2, src.rows / 2 ), min( src.cols, src.rows ) / 4, Scalar( 1 ), -1 );

    try
    {
        // 对源图像根据权重图进行归一化
        normalizeUsingWeightMap( weight, src );
    }
    catch ( const cv::Exception& ex )
    {
        std::cerr << "OpenCV Exception: " << ex.what() << std::endl;
        return -1;
    }

    // 显示结果
    convertScaleAbs( src, src );  // 将处理后的图像转换回可显示的格式
    imshow( "Normalized Image", src );
    waitKey( 0 );  // 等待按键以关闭窗口

    return 0;
}

运行结果

在这里插入图片描述

相关文章:

  • SQL 通用表表达式(CTE )
  • Linux之基本命令和格式
  • RabbitMQ 学习整理2 - 消峰限流
  • C++学习之类和对象基本概念
  • 使用vector构造杨辉三角形
  • 深入理解JavaScript中的同步和异步编程模型及应用场景
  • 【#2】介绍第三方库
  • 全面系统梳理多模态LLM对齐算法
  • Shiro学习(一):Shiro介绍和基本使用
  • vue2拦截器 拦截后端返回的数据,并判断是否需要登录
  • 程序化广告行业(32/89):常见广告位类型深度剖析
  • 【大模型基础_毛玉仁】4.2 参数附加方法
  • spring 核心注解整理
  • Windows 和 Linux 操作系统架构对比以及交叉编译
  • 网络华为HCIA+HCIP 交换机
  • ⭐算法OJ⭐连接所有点的最小费用【最小生成树】(C++实现)Min Cost to Connect All Points
  • 申报视频材料要求!第三批南充西充县非物质文化遗产代表性项目(增补)条件时间和申请程序
  • 原生后台GPS位置限制,降低功耗
  • HarmonyOS NEXT图形渲染体系:重新定义移动端视觉体验
  • 中学数学几百年重大错误:将无穷多各异假R误为R——两数集相等的必要条件
  • 枞阳县建设局网站/百度推广在哪里
  • 网站建设服务商排名/网络营销的现状分析
  • 北京设计公司有哪些公司/seo站长网
  • 海外网购/seo属于技术还是营销
  • 中国排名高的购物网站/杭州网站seo推广软件
  • 建设企业功能网站/如何创建自己的网址