首页IT科技opencv图片放大缩小(Opencv学习之:将图片的值进行范围调整 cv2.normalize())

opencv图片放大缩小(Opencv学习之:将图片的值进行范围调整 cv2.normalize())

时间2025-07-07 10:27:38分类IT科技浏览5699
导读:cv2.normalize( 指定将图片的值放缩到 0-255 之间 array...

cv2.normalize()

指定将图片的值放缩到 0-255 之间 array = cv2.normalize(array,None,0,255,cv2.NORM_MINMAX)

cv2.NORM_MINMAX :使用的放缩方式是 min_max 的方式

其对应的原理是:

x

^

=

x

m

i

n

m

a

x

m

i

n

(

m

a

x

m

i

n

)

+

m

i

n

\hat{x} = \frac{x-min}{max-min} * (max^{}-min^{}) + min^{}

x=maxminxmin(maxmin)+min

x

^

\hat{x}

x
表示矩阵中任意一点归一化之后的值

x

x

x
表示矩阵中的所有原始值

m

i

n

,

m

a

x

min,max

min,max
分别代表矩阵中的最大值和最小值

m

a

x

,

m

i

n

max^{}, min^{}

max,min
分别表示放缩的目标范围中的最大和最小值

例如当我们想把 0-255 值放缩到 0-1 之间              ,那么

m

a

x

=

255

,

m

i

n

=

,

m

a

x

=

1

,

m

i

n

=

max=255, min=0, max^{}=1,min^{}=0

max=255,min=0,max=1,min=0

就可以得到我们平时用的归一化公式:

x

^

=

x

m

i

n

m

a

x

m

i

n

\hat{x} = \frac{x-min}{max-min}

x=maxminxmin

而当我们想把值从 0-1 之间放缩到 0-255 那么

m

a

x

=

1

,

m

i

n

=

,

m

a

x

=

255

,

m

i

n

=

max=1, min=0, max^{}=255,min^{}=0

max=1,min=0,max=255,min=0

x

^

=

x

1

(

255

)

+

=

x

255

\hat{x} = \frac{x-0}{1-0} * (255-0) + 0=x*255

x=10x0(2550)+0=x255

除此之外                      ,还有其他的归一化和放缩的选项      ,例如:

cv2.NORM_INF:归一化数组的(切比雪夫距离)L∞范数(绝对值的最大值) cv2.NORM_L1 : 归一化数组的(曼哈顿距离)L1-范数(绝对值的和) cv2.NORM_L2: 归一化数组的(欧几里德距离)L2-范数

想知道具体的公式解析可以参考文章:

opencv中归一化函数cv2.normalize()的原理讲解

代码示例

import cv2 test_set = torchvision.datasets.CIFAR10(root=../datasets, train=False, download=False, transform=None) x = train_set.data[0] x = x / 255. x array([[[0.23137255, 0.24313725, 0.24705882], [0.16862745, 0.18039216, 0.17647059], [0.19607843, 0.18823529, 0.16862745], ..., [0.61960784, 0.51764706, 0.42352941], [0.59607843, 0.49019608, 0.4 ], [0.58039216, 0.48627451, 0.40392157]], [[0.0627451 , 0.07843137, 0.07843137], [0. , 0. , 0. ], [0.07058824, 0.03137255, 0. ], ..., [0.48235294, 0.34509804, 0.21568627], [0.46666667, 0.3254902 , 0.19607843], [0.47843137, 0.34117647, 0.22352941]], [[0.09803922, 0.09411765, 0.08235294], [0.0627451 , 0.02745098, 0. ], [0.19215686, 0.10588235, 0.03137255], ..., [0.4627451 , 0.32941176, 0.19607843], [0.47058824, 0.32941176, 0.19607843], [0.42745098, 0.28627451, 0.16470588]], ..., [[0.81568627, 0.66666667, 0.37647059], [0.78823529, 0.6 , 0.13333333], [0.77647059, 0.63137255, 0.10196078], ..., [0.62745098, 0.52156863, 0.2745098 ], [0.21960784, 0.12156863, 0.02745098], [0.20784314, 0.13333333, 0.07843137]], [[0.70588235, 0.54509804, 0.37647059], [0.67843137, 0.48235294, 0.16470588], [0.72941176, 0.56470588, 0.11764706], ..., [0.72156863, 0.58039216, 0.36862745], [0.38039216, 0.24313725, 0.13333333], [0.3254902 , 0.20784314, 0.13333333]], [[0.69411765, 0.56470588, 0.45490196], [0.65882353, 0.50588235, 0.36862745], [0.70196078, 0.55686275, 0.34117647], ..., [0.84705882, 0.72156863, 0.54901961], [0.59215686, 0.4627451 , 0.32941176], [0.48235294, 0.36078431, 0.28235294]]]) plt.imshow(x) x_ = cv2.normalize(x,None,0,255,cv2.NORM_MINMAX) x_ array([[[ 59, 62, 63], [ 43, 46, 45], [ 50, 48, 43], ..., [158, 132, 108], [152, 125, 102], [148, 124, 103]], [[ 16, 20, 20], [ 0, 0, 0], [ 18, 8, 0], ..., [123, 88, 55], [119, 83, 50], [122, 87, 57]], [[ 25, 24, 21], [ 16, 7, 0], [ 49, 27, 8], ..., [118, 84, 50], [120, 84, 50], [109, 73, 42]], ..., [[208, 170, 96], [201, 153, 34], [198, 161, 26], ..., [160, 133, 70], [ 56, 31, 7], [ 53, 34, 20]], [[180, 139, 96], [173, 123, 42], [186, 144, 30], ..., [184, 148, 94], [ 97, 62, 34], [ 83, 53, 34]], [[177, 144, 116], [168, 129, 94], [179, 142, 87], ..., [216, 184, 140], [151, 118, 84], [123, 92, 72]]], dtype=uint8) plt.imshow(x_)

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
redission源码(redis源码笔记 initServer 刘浩de技术博客 博客园)