如何将 numpy 数组转换为(并显示)图像?

2025-03-06 08:52:00
admin
原创
68
摘要:问题描述:我这样创建了一个数组:import numpy as np data = np.zeros( (512,512,3), dtype=np.uint8) data[256,256] = [255,0,0] 我想要做的是在 512x512 图像的中心显示一个红点。(至少一开始是这样……我想我可以从那里弄...

问题描述:

我这样创建了一个数组:

import numpy as np
data = np.zeros( (512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]

我想要做的是在 512x512 图像的中心显示一个红点。(至少一开始是这样……我想我可以从那里弄清楚其余部分)


解决方案 1:

使用plt.imshow来创建图形并plt.show显示它:

from matplotlib import pyplot as plt
plt.imshow(data, interpolation='nearest')
plt.show()

对于 Jupyter 笔记本,在导入 matplotlib 之前添加此行:

%matplotlib inline 

对于 Jupyter [ demo ] 中的交互式图表,请安装 ipyml pip install ipympl,然后使用:

%matplotlib widget 

解决方案 2:

您可以使用 PIL 来创建(并显示)图像:

from PIL import Image
import numpy as np

w, h = 512, 512
data = np.zeros((h, w, 3), dtype=np.uint8)
data[0:256, 0:256] = [255, 0, 0] # red patch in upper left
img = Image.fromarray(data, 'RGB')
img.save('my.png')
img.show()

解决方案 3:

注意:这两个 API 均已弃用,然后被删除。

最短路径是使用scipy,如下所示:

# Note: deprecated in v0.19.0 and removed in v1.3.0
from scipy.misc import toimage
toimage(data).show()

这还需要安装 PIL 或 Pillow。

类似的方法也需要 PIL 或 Pillow,但可能调用不同的查看器

# Note: deprecated in v1.0.0 and removed in v1.8.0
from scipy.misc import imshow
imshow(data)

解决方案 4:

如何通过示例显示存储在 numpy 数组中的图像(在 Jupyter 笔记本中使用)

我知道有更简单的答案,但这个可以让你理解如何从 numpy 数组中实际绘制图像。

加载示例

from sklearn.datasets import load_digits
digits = load_digits()
digits.images.shape   #this will give you (1797, 8, 8). 1797 images, each 8 x 8 in size

显示一个图像的数组

digits.images[0]
array([[ 0.,  0.,  5., 13.,  9.,  1.,  0.,  0.],
       [ 0.,  0., 13., 15., 10., 15.,  5.,  0.],
       [ 0.,  3., 15.,  2.,  0., 11.,  8.,  0.],
       [ 0.,  4., 12.,  0.,  0.,  8.,  8.,  0.],
       [ 0.,  5.,  8.,  0.,  0.,  9.,  8.,  0.],
       [ 0.,  4., 11.,  0.,  1., 12.,  7.,  0.],
       [ 0.,  2., 14.,  5., 10., 12.,  0.,  0.],
       [ 0.,  0.,  6., 13., 10.,  0.,  0.,  0.]])

创建空的 10 x 10 子图以可视化 100 张图像

import matplotlib.pyplot as plt
fig, axes = plt.subplots(10,10, figsize=(8,8))

绘制 100 张图像

for i,ax in enumerate(axes.flat):
    ax.imshow(digits.images[i])

结果:

在此处输入图片描述

它做什么axes.flat
它创建一个 numpy 枚举器,以便您可以遍历轴以在其上绘制对象。
示例:

import numpy as np
x = np.arange(6).reshape(2,3)
x.flat
for item in (x.flat):
    print (item, end=' ')

解决方案 5:

使用pillow的fromarray,例如:

from PIL import Image
from numpy import *

im = array(Image.open('image.jpg'))
Image.fromarray(im).show()

解决方案 6:

import numpy as np
from keras.preprocessing.image import array_to_img
img = np.zeros([525,525,3], np.uint8)
b=array_to_img(img)
b

解决方案 7:

使用pygame,您可以打开一个窗口,将表面作为像素数组获取,然后根据需要进行操作。但是,您需要将 numpy 数组复制到表面数组中,这比在 pygame 表面上执行实际图形操作要慢得多。

解决方案 8:

例如,您的图像位于名为“图像”的数组中

你所要做的就是

plt.imshow(image)
plt.show

这将以图像的形式显示一个数组,另外,不要忘记导入 PLT

解决方案 9:

使用 matplotlib 进行此操作的补充。我发现它很适合执行计算机视觉任务。假设您获得了 dtype = int32 的数据

from matplotlib import pyplot as plot
import numpy as np

fig = plot.figure()
ax = fig.add_subplot(1, 1, 1)
# make sure your data is in H W C, otherwise you can change it by
# data = data.transpose((_, _, _))
data = np.zeros((512,512,3), dtype=np.int32)
data[256,256] = [255,0,0]
ax.imshow(data.astype(np.uint8))

解决方案 10:

Python图像库可以使用 Numpy 数组显示图像。请查看此页面以获取示例代码:

  • 在数值数组和 PIL 图像对象之间转换

编辑:正如该页面底部的注释所述,您应该查看最新的发行说明,这会使这一切变得更加简单:

http://effbot.org/zone/pil-changes-116.htm

解决方案 11:

这可能是一个可能的代码解决方案:

from skimage import io
import numpy as np
data=np.random.randn(5,2)
io.imshow(data)
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3878  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2714  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   49  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   49  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   49  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用