有没有其他方法可以把RGB转换成HSI?

2024-05-16 16:34:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python将RGB消息转换成HSI,下面是我的代码:

#pre_proc
rows, cols = pixels.shape[0], pixels.shape[1]
# transpose to 3 * pixels_number
# utilized for extract R/G/B cols
t_p = pixels.swapaxes(0, 2).swapaxes(1, 2)
R, G, B = t_p[0], t_p[1], t_p[2]
dRG, dRB, dGB = R - G, R - B, G - B # all belongs to [0,255]
dRG[dRG == 0.0] = 0.5
dRB[dRB == 0.0] = 0.5 
dGB[dGB == 0.0] = 0.5 # just ignore my divide_zero exception handler
# H part
cos = (dRG+dRB)/(2*numpy.sqrt(dRG**2+dRB*dGB))
H = numpy.arccos(cos)
H[numpy.isnan(H)] = 0.0 # if cos is too big, arccos returns nan
# I part
I = pixels.mean(axis = 2)
# prepare for Saturation calc
Imin = pixels.min(axis = 2)
I[I == 0.0] = 1
# S part
S = 1 - Imin / I

我的问题是,这个过程花费了几乎0.24s@1000*1000像素的图像,这是无法忍受的,因为我的应用程序必须能够处理ms级别的图像,0.02s是可以接受的。 为了你的方便,我用了时间时钟()分别测量预处理、H、S和I部分,发现预处理成本为0.041s,H成本为0.088s,I成本为0.075s,S成本为0.013s。 有没有图书馆可以更快地做到这一点?谢谢分享。在


Tags: tonumpyforcos成本colsshapepart
1条回答
网友
1楼 · 发布于 2024-05-16 16:34:24

我建议您使用OpenCV库。它可以快速实现各种图像处理和计算机视觉操作,包括颜色转换。它有一个Python API。在

有关cvtColor方法的文档,请参见here,该方法是用于颜色空间转换的OpenCV方法。从RGB到HSI的转换在OpenCV中称为CV_RGB2HLS。在

相关问题 更多 >