首页 > 解决方案 > RGB 浮点图像转灰度 uint8

问题描述

我正在尝试创建一个函数来将图像从color 转换为 grayscale。此外,将其从浮点数转换为整数。

我注意到默认情况下,scikit-image 转换函数返回具有 [0, 1] 范围内的浮点表示的图像。我想要使​​用 np.uint8 的 0-255 整数表示。

from skimage.color import rgb2gray
import numpy as np

def to_grayscale_uint (image):
    original = image()
    grayscale = rgb2gray(original)
    grayscale = np.uint8
    target = target.astype('uint8')
    return grayscale

标签: pythonscikit-image

解决方案


由于您的输出在 [0, 1] 范围内,您可以简单地将其乘以 255,然后np.uint8()用于强制转换。

import numpy as np

from skimage import data
from skimage.color import rgb2gray


def to_gray_uint(image):
    return np.uint8(rgb2gray(image) * 255)


original = data.astronaut()

gray = rgb2gray(original)
print(gray.min(), gray.max(), gray.dtype)  # prints: 0.0 1.0. float64

gray = to_gray_uint(original)
print(gray.min(), gray.max(), gray.dtype)  # prints: 0 255 uint8


推荐阅读