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

相关文章

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使