OpenCV:normalize函数原理及应用

2024-01-31 00:58

本文主要是介绍OpenCV:normalize函数原理及应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 函数原型

void cv::normalize(InputArry src,InputOutputArray dst,double alpha=1,double beta=0,int norm_type=NORM_L2,int dtype=-1,InputArray mark=noArry())

2. 函数作用归一化数据。

该函数分为范围归一化与数据值归一化。

经常应用在将数值限定在一个范围,以便使用同一套阈值参数的情况;

3. 函数参数

src               输入数组;
dst               输出数组,数组的大小和原数组一致;
alpha           1-用来规范值,2-规范范围,并且是下限;
beta             只用来规范范围并且是上限;
norm_type   归一化选择的数学公式类型;
dtype           当为负,输出的宽高通道数都等于输入,

                    当为正,输出只在深度与输入不同,不同的地方由dtype决定;
mark            掩码。选择感兴趣区域,选定后只能对该区域进行操作。

4. 归一化选择的数学公式类型介绍(norm_type)
设数组中原有{A1,A2,A3...An}
NORM_L1:

                                          
NORM_INF:

                                         
NORM_L2:

                                         
NORM_MINMAX:(AK不属于{max(Ai)},min(Ai),当AK等于max(Ai)时p=1,等于min(Ai)时p=0)

                                                              

5.举例说明:
src={10,23,71}

NORM_L1运算后得到    dst={0.096, 0.221, 0.683}

NORM_INF运算后得到  dst={0.141, 0.324, 1}

NORM_L2运算后得到   dst={0.133, 0.307, 0.947}

NORM_MINMAX运算得到 dst={0, 0.377, 1}

6.范围归一化与值归一化的区别

区别一:范围归一化使用的是如下式子,设范围为【0,255】

                                

即把src缩放到【0,255】这个范围内,并不使用上面的4个公式去解。

区别二:使用范围归一化时,beta必有值不等于0

 

7. 举例说明:
(1)值归一化:

#include<opencv2/opencv.hpp>
#include<iostream>using namespace std;int main()
{vector<double>a={ 10,11,234,45,65,456,0 };cv::normalize(a, a, 1, 0, cv::NORM_MINMAX);for (int i=0;i < a.size();i++){cout << a[i] << endl;}return 0;
}

结果如下:

                                                                    

(2)范围归一化

#include<opencv2/opencv.hpp>
#include<iostream>using namespace std;int main()
{vector<double>a={ 10,11,234,45,65,456,0 };cv::normalize(a, a, 0, 255, cv::NORM_MINMAX);for (int i=0;i < a.size();i++){cout << a[i] << endl;}return 0;
}


结果如下:

                                                                

参考文献:

1. https://blog.csdn.net/cosmispower/article/details/64457406

这篇关于OpenCV:normalize函数原理及应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/662105

相关文章

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数