RGB转换成hsi图像的代码
时间: 2024-01-21 09:19:08 浏览: 78
rgbHSI_hsi_RGB转HSI_
以下是RGB转换成HSI图像的Python代码:
```python
import numpy as np
import cv2
def rgb_to_hsi(img):
# 将R、G、B分量归一化到[0,1]范围内
img = img / 255.0
r, g, b = cv2.split(img)
# 计算强度分量(亮度)
i = (r + g + b) / 3.0
# 计算饱和度
s = 1 - np.minimum.reduce([r, g, b]) / i
# 计算色相
h = np.zeros_like(i)
h[(b <= g)] = np.arccos((2 * r[b <= g] - g[b <= g] - b[b <= g]) / (2 * np.sqrt((r[b <= g] - g[b <= g])*(r[b <= g] - g[b <= g]) + (r[b <= g] - b[b <= g])*(g[b <= g] - b[b <= g]))))
h[(b > g)] = 2*np.pi - np.arccos((2 * r[b > g] - g[b > g] - b[b > g]) / (2 * np.sqrt((r[b > g] - g[b > g])*(r[b > g] - g[b > g]) + (r[b > g] - b[b > g])*(g[b > g] - b[b > g]))))
# 将弧度转换为角度
h = h / (2 * np.pi) * 360
# 将饱和度和强度分量缩放到[0,255]范围内
s = s * 255
i = i * 255
# 将HSI图像合并并返回
hsi_img = cv2.merge([h, s, i]).astype(np.uint8)
return hsi_img
```
其中,img是输入的RGB图像,返回的hsi_img是转换后的HSI图像。该函数使用Numpy和OpenCV库实现。
阅读全文