【问题标题】:Converting PIL.Image to skimage将 PIL.Image 转换为 skimage
【发布时间】:2021-03-12 11:15:14
【问题描述】:

我的项目中有 2 个模块:第一个使用字节格式的图像,第二个需要 skimage 对象。我需要把它们结合起来。

我有这个代码:

import io
from PIL import Image
import skimage.io

area = (...)
image = Image.open(io.BytesIO(image_bytes))
image = Image.crop(area)
image = skimage.io.imread(image)

但我收到此错误:

如何将图像(对象/变量)转换为 skimage?我不一定需要 PIL 图像,这只是使用字节图像的一种方式,因为我需要裁剪图像

谢谢!

【问题讨论】:

    标签: python image-processing computer-vision scikit-image cv2


    【解决方案1】:

    Scikit-image 适用于存储为 Numpy 数组的图像 - 与 OpenCVwand 相同。所以,如果你有一个PIL Image,你可以像这样为 scikit-image 创建一个 Numpy 数组:

    # Make Numpy array for scikit-image from "PIL Image"
    na = np.array(YourPILImage)
    

    以防万一您想另辟蹊径,从 Numpy 数组中创建一个 PIL Image,您可以这样做:

    # Make "PIL Image" from Numpy array
    pi = Image.fromarray(na)
    

    【讨论】:

    • 但是 skimage 如何加载这个数组呢?我的意思是, skimage.io.imread() 采用 str 类型 - 图像文件路径 @mark-setchell
    • 如果你的磁盘上有一个名为"image.jpg"的文件,你需要image = skimage.io.imread("image.jpg")
    • 不,我没有。我已经有一个我使用的图像对象,它不能保存为服务器上的文件来为 skimage 加载它。这就是我问的原因。它只是程序中的一个对象图像变量@Mark-Setchell
    • 我不明白你有什么。假设您有一个名为"thing" 的东西,所以请显示print(type(thing)) 的输出,并请显示thing 的前几个字节。谢谢。
    • @Neighbourhood:我看不出问题出在哪里。你试过马克的代码吗?如果你有image = skimage.io.imread(image),请使用image = np.array(image)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2019-07-26
    相关资源
    最近更新 更多