将 2D Numpy 灰度值数组转换为 PIL 图像

2024-04-01

假设我有一个 2D Numpy 数组,其值范围在 0 到 1 之间,它表示灰度图像。然后如何将其转换为 PIL Image 对象?迄今为止的所有尝试都产生了极其奇怪的分散像素或黑色图像。

for x in range(image.shape[0]):
    for y in range(image.shape[1]):
        image[y][x] = numpy.uint8(255 * (image[x][y] - min) / (max - min))

#Create a PIL image.
img = Image.fromarray(image, 'L')

在上面的代码中,numpy 数组图像通过 (image[x][y] - min) / (max - min) 进行归一化,因此每个值都在 0 到 1 的范围内。然后将其乘以 255 并转换为8 位整数。理论上,这应该通过模式 L 的 Image.fromarray 处理成灰度图像 - 但结果是一组分散的白色像素。


我认为答案是错误的。 Image.fromarray( ____ , 'L') 函数似乎只适用于 0 到 255 之间的整数数组。我为此使用 np.uint8 函数。

如果您尝试制作渐变,您可以看到这一点。

import numpy as np
from PIL import Image

# gradient between 0 and 1 for 256*256
array = np.linspace(0,1,256*256)

# reshape to 2d
mat = np.reshape(array,(256,256))

# Creates PIL image
img = Image.fromarray(np.uint8(mat * 255) , 'L')
img.show()

形成干净的渐变

vs

import numpy as np
from PIL import Image

# gradient between 0 and 1 for 256*256
array = np.linspace(0,1,256*256)

# reshape to 2d
mat = np.reshape(array,(256,256))

# Creates PIL image
img = Image.fromarray( mat , 'L')
img.show()

具有相同类型的神器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 2D Numpy 灰度值数组转换为 PIL 图像 的相关文章

随机推荐

  • iOS10应用关闭时如何响应本地通知?

    当应用程序完全关闭 不在后台 时如何响应本地通知 当应用程序在后台或前台运行时 一切正常 但是当应用程序关闭并且我试图回复通知时 仅 application didFinishLaunchingWithOptions 被呼叫 userNot
  • python中带注释的双向条形图plotly

    我有一个带有玩具版本的 pandas 数据集 可以用它创建 creating a toy pandas dataframe s1 pd Series dont have a mortgage 31 8 have mortgage 15 65
  • 从 Boost 多索引迭代器获取数字索引

    我正在存储以下一堆内容 struct Article std string title unsigned db id id field in MediaWiki database dump 在 Boost MultiIndex 容器中 定义
  • 如何将图像旁边的文本垂直居中

    无论我做什么 我都无法使镜头在图像旁边垂直居中 有什么想法吗 我已经搜索过但没有结果 任何帮助将不胜感激 谢谢 您可能需要扩大结果窗口才能看到我在说什么 FIDDLE http jsfiddle net mbM7C 4 HTML div c
  • 使用 Twilio 发送群组消息

    有没有办法使用 twilio 向群组线程发送消息 我不希望每个收件人都有一个单独的线程 其中包含发送消息的 twilio 号码 感谢您的任何建议 来自 Twilio 的 Ricky 在这里 您无法按照您所描述的方式进行设置 但我们确实有一篇
  • 如何在 IIS 10 上配置缓存?

    我有一个网站 并且启用了缓存 如下所示 为服务器启用缓存 为我正在测试的网站启用缓存 在响应标头中 我将整个网站的网页内容过期时间设置为 30 天 没有针对任何特定文件夹的设置 为文件 css js png woff2 启用缓存 在 Chr
  • 在 Kotlin 中为 API 级别小于或等于 16 创建 Date 对象

    这听起来可能非常有趣和基本 但我正在努力通过将纪元到它的秒数传递给 Kotlin 来创建 DateTime 类型的对象 我得到的示例要么是需要 API 级别 26 的库 要么只是讨论从 DD MM YYYY 字符串到其他字符串的格式转换 到
  • 使用单元格按钮操作传递多个参数

    NOTE 我不需要任何关于使用 UITableview 的 didselect 委托发送数据的建议 myButton h import
  • 在 UITableView 中保留占位符单元格

    我有一个 UITableView 我永远不想低于 1 个单元格 它是一个目录读数 如果目录中没有文件 它有一个单元格显示 无文件 在编辑模式下 有一个用于创建文件的奖励单元格 因此编辑模式永远不会低于两个单元格 可能只是睡眠不足让我现在无法
  • 避免在 sweave/pgfsweave 编译期间显示数字

    使用 sweave pgfsweave 进行编译时 每次在 R 中创建图形时 它都会显示在图形窗口中 在 sweave 编译过程中 这在许多情况下很有帮助 因为我可以在编译文档时看到图形的样子 但是当我通过 ssh 编译一个大文档时 这可能
  • Marshal.GenerateGuidForType(Type) 和 Type.GUID 有什么区别?

    Type classType typeof SomeClass bool equal Marshal GenerateGuidForType classType classType GUID 我还没有发现不符合这个条件的案例 So 为什么以
  • 从程序内调用 daemon(0,0) 和在后台启动程序并重定向其输出有区别吗

    在程序 progX 开头使用以下代码有什么区别 if daemon 0 0 1 printf daemon error s strerror errno 或通过以下命令运行 progX progX 2 gt dev null 1 gt de
  • 无法加载 C++/CLI DLL 资源

    我只是想查看资源名称 但什么也没有出现 我在 Visual Studio 2010 中制作并编译了一个 C CLI 托管 DLL 并添加了一些资源文件作为测试 一个图标和一个位图 我已经检查过 PE Explorer 资源肯定在那里 我的简
  • Grails - 按域关系属性排序(使用 createCriteria())

    我有两个具有 1 n 关系的域类 import Action class Task Action actionParent String taskName and class Action String actionName 我有一个任务列
  • 如何获取每个 Kotlin 的当前索引

    如何在foreach循环中获取索引 我想打印每第二次迭代的数字 例如 for value in collection if iteration no 2 do something 在java中 我们有传统的for循环 for int i 0
  • 新的 Clang Objective-C 文字可以重定向到自定义类吗?

    虽然超载 开始踏上危险的领域 我喜欢在 Clang 3 1 中添加新的 Objective C 文字 不幸的是 新的文字对我来说用处有限 除了代码需要与 AppKit 交互的情况外 我大多放弃使用基础类 转而使用我自己的自定义框架 出于多种
  • 在请求正文中发送数组不起作用:使用改造 2.1.0

    将 CustomDishItems 作为数组发送时给出结果 服务器在处理请求时遇到错误 它适用于 CustomDishItems 以下是我使用 PHP Web 服务在服务器上 POST 所需的数据 服务网址 http saavorapi p
  • iPad - 获取纵向和横向屏幕尺寸

    我使用以下代码来获取屏幕尺寸宽度 CGFloat width UIScreen mainScreen bounds size width 100 但其纵向和横向的宽度均为 668 0 如何根据设备的方向获得不同的宽度 我遇到了与您相同的问题
  • SVG - 调整以一定角度放置的矩形的大小

    All 我的应用程序中有一个 SVG 矩形 可以通过拖动矩形两侧的结束栏 左和右 来水平拉伸它 矩形可以是 1 调整大小 通过如上所述拉伸 2 拖动 3 并旋转 一切工作正常 但是 一个奇怪的经历是 当我将矩形旋转到接近 90 度 然后尝试
  • 将 2D Numpy 灰度值数组转换为 PIL 图像

    假设我有一个 2D Numpy 数组 其值范围在 0 到 1 之间 它表示灰度图像 然后如何将其转换为 PIL Image 对象 迄今为止的所有尝试都产生了极其奇怪的分散像素或黑色图像 for x in range image shape