归一化就是把数据经过处理后限制在某个特定范围内。

opencv 中使用 normalize 方法来实现归一化,它的函数原型如下

cv2.normalize(src, dst, alpha=None, beta=None, norm_type=None, dtype=None, mask=None)

其中:

  • src: 输入矩阵

  • dst: 输出矩阵, 与输入矩阵形状相同

  • alpha: 如果 norm_typeNORM_MINMAX,则 alpha 为大值或小值;如果 norm_type 为其他类型时,则为归一化要乘的系数

  • beta: 如果 norm_typeNORM_MINMAX,则 beta 为小值或大值,和 alpha 对应;如果 norm_type 为其他类型,beta 被忽略,一般传入0

  • norm_type: 归一化类型,常见的有 NORM_MINMAXNORM_INFNORM_L1NORM_L2

  • dtype: 默认类型与 src 相同,可选参数

  • mask: 可选操作掩膜,默认为空

示例

import cv2
import numpy as npimage = cv2.imread('lenna.png')
cv2.imshow("original image", image)# 灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 转换为浮点数类型数组
gray = np.float32(gray)# NORM_MINMAX,最常用的一种方法,数组的数值会被缩放到一个指定的范围,比如本例中的 0~1
dst = np.zeros(gray.shape, dtype=np.float32)
# 这里alpha=1, beta=0也是ok的
cv2.normalize(gray, dst=dst, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX)
# 显示原图时,需要将像素值 re-scale 到 0~255
cv2.imshow("NORM_MINMAX", np.uint8(dst*255))# NORM_INF,无穷范数,每个值除以最大值来进行无穷范数归一化
dst = np.zeros(gray.shape, dtype=np.float32)
cv2.normalize(gray, dst=dst, alpha=1.0, beta=0, norm_type=cv2.NORM_INF)
# 归一化后最大值就是1,所以也是*255
cv2.imshow("NORM_INF", np.uint8(dst*255))# NORM_L1,1范数,每个值除以它们的和来进行归一化
dst = np.zeros(gray.shape, dtype=np.float32)
cv2.normalize(gray, dst=dst, alpha=1.0, beta=0, norm_type=cv2.NORM_L1)
# 归一化后范围是 0~1,但最大值不是1,所以这里乘以一个足够大的数,你也可以取其它值,不一定是下面这个数。注意到 np.uint8 的最大值是255,因此 re-scale 的范围也是 0~255
cv2.imshow("NORM_L1", np.uint8(dst*20000000))# NORM_L2,2范数,每个值除以该向量的模长,归一化为单位向量
dst = np.zeros(gray.shape, dtype=np.float32)
cv2.normalize(gray, dst=dst, alpha=1.0, beta=0, norm_type=cv2.NORM_L2)
# 与NORM_L1类似
cv2.imshow("NORM_L2", np.uint8(dst*30000))cv2.waitKey(0)
cv2.destroyAllWindows()

更多 OpenCV 教程请访问我的知识星球,每日更新

OpenCV中的归一化相关推荐

  1. OpenCV中直方图反向投影算法详解与实现

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自:opencv学堂 一:直方图交叉 OpenCV中直方图反向 ...

  2. 在OpenCV中基于深度学习的边缘检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 导读 分析了Canny的优劣,并给出 ...

  3. 图像滤波与OpenCV中的图像平滑处理

    .About图像滤波 频率:可以这样理解图像频率,图像中灰度的分布构成一幅图像的纹理.图像的不同本质上是灰度分布规律的不同.但是诸如"蓝色天空"样的图像有着大面积近似的灰度强度,而 ...

  4. 在OpenCV中利用卷积进行图像滤波

    简 介: 本文首先讨论了卷积核的概念,以及如何用于对图像进行滤波.然后通过他们对图像进行数学运算来实现特定的效果,比如平和和锐化.展示了如何在OpenCV中实现2D滤波. 在等同卷积卷积核之后,我们创 ...

  5. OpenCV中颜色分布直方图及其应用

    1.图像直方图 直方图是对数据的集合 统计,并将统计结果分布于一系列预定义的 bins 中.这里的 数据 不仅仅指的是颜色灰度值 , 统计数据可能是任何能有效描述图像的特征(如梯度.方向等).特别地, ...

  6. opencv 中 快速傅里叶变换 FFT

    opencv 中 傅里叶变换 FFT,代码如下: void fft2(IplImage *src, IplImage *dst) { //实部.虚部IplImage *image_Re = 0, *i ...

  7. 【转】PCA算法学习_1(OpenCV中PCA实现人脸降维)

    前言: PCA是大家经常用来减少数据集的维数,同时保留数据集中对方差贡献最大的特征来达到简化数据集的目的.本文通过使用PCA来提取人脸中的特征脸这个例子,来熟悉下在oepncv中怎样使用PCA这个类. ...

  8. OpenCV 中的图像处理 004_平滑图像

    本文主要内容来自于 OpenCV-Python 教程 的 OpenCV 中的图像处理 部分,这部分的全部主要内容如下: 改变色彩空间 学习在不同色彩空间之间改变图像.另外学习跟踪视频中的彩色对象. 图 ...

  9. OpenCV中的模板匹配/Filter2d

    1.模板匹配 模板匹配是在图像中寻找目标的方法之一.Come On, Boy.我们一起来看看模板匹配到底是怎么回事. 参考链接:http://www.opencv.org.cn/opencvdoc/2 ...

最新文章

  1. 2019智能手表推荐_智能手表一定越贵越好?试用过后这五款才真正值得推荐
  2. mysql 多个if_mysql if else 多条件
  3. python怎么读取txt文件第二行-Python:如何选择文本文件的第一行,以及第二行……?...
  4. ubtunu打开firefox_如何在Firefox(在Lubuntu中)中打开“apt”链接?
  5. MiningZhiDaoQACorpus,580万百度知道问题,980万问答对数据挖掘项目
  6. linux vim 到底,真的有(很多)linux大牛用vim写项目吗?
  7. 我的QT5学习之路(目录)
  8. Java异常处理之InvocationTargetException(反射异常)
  9. c ++ 继承_了解C ++中的继承概念
  10. 【Codeforces576E_CF576E】Painting Edges(可撤销并查集+线段树分治)
  11. C++中 (n1)和(1n) 分别表示什么意思?
  12. Linux中的readelf命令
  13. 动易 转 html5,动易2005版系统默认风格及修改方法
  14. 【算法/C语言】01背包问题(动态规划DP)
  15. Oracle 分组求和(特殊处理)
  16. 远程windows蓝屏解决办法
  17. mysql报1114错误_mysql插入数据出现error1114 table is full
  18. layui select(下拉框)修改事件监听
  19. win7与linux切换,Windows 7停更后不想用Win10?教你直接换上Linux再战
  20. 启动计算机时听到嘀嘀声,为何电脑开机时会有滴滴的声音?

热门文章

  1. 四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps
  2. 解决 golang 中 wrote more than the declared Content-Length
  3. 大学生或者程序员上B站学习编程必备的几位优秀UP主
  4. 每周全球科技十大新闻(2019.7.14-7.21)
  5. 基于视觉的扫地机器人导航系统(模块设计)
  6. 使用滴滴mpx 开发一个小程序组件
  7. 中国银河证券公募基金分类体系的理论依据与规则基础
  8. 卷积、池化、激励函数的顺序
  9. 区块链教程之以太坊开发连接主网和测试网
  10. 第二章 关系模型和关系运算理论 3类完整性