关于RGB图像和HSV图像的归一化问题

归一化就是把范围都压缩到0-1之间,可尽量避免处理过程中的精度丢失。
先上结论:
H色调: 0 — 180

S饱和度: 0 — 255

V亮度: 0 — 255
RGB三通道都是0-255

进行一个并不严谨的验证,

import cv2
import numpy as np

img = cv2.imread('jieguo.jpg')
HSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
H, S, V = cv2.split(HSV)
x, y = np.shape(H)
a = 0
b = 0
for i in range(0, x):
    for j in range(0, y):
         if H[i, j] > 181:
             a = a +1
print(a)

结果为0

import cv2
import numpy as np

img = cv2.imread('jieguo.jpg')
HSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
H, S, V = cv2.split(HSV)
x, y = np.shape(H)
a = 0
b = 0
for i in range(0, x):
    for j in range(0, y):
         if H[i, j] > 170:
             a = a +1
print(a)

结果为4308
说明H在170-180之间是存在的,而大于180就没有了。
同理可看出S和V的255也没啥问题。

RGB归一化:

import cv2

img = cv2.imread('jieguo.jpg')
x = img/255

HSV归一化:

import cv2

img = cv2.imread(‘jieguo.jpg’)
HSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
s = HSV/255

搞了半天也没能单独改变一个通道的值,反正除以255也算是在0-1内了,如果有大佬可以指点一下就好了。

ps:遇到的问题是,
HSV[:, :, 0] = (HSV[:, :, 0]/180)
print(HSV[:, :, 0])结果全是0.

x = (HSV[:, :, 0]/180)
print(x)
结果就是正确的。但是没办法把它放回到图像通道里了。
加一句HSV[:, :, 0]=X还是不行,会全变成0,估计是数据类型的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值