jls*_*int 191 python arrays numpy data-visualization image
我这样创建了一个数组:
import numpy as np
data = np.zeros( (512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]
Run Code Online (Sandbox Code Playgroud)
我想要做的是在512x512图像的中心显示一个红点.(至少从...开始......我想我可以从中找出其余部分)
Ste*_*joa 251
以下应该有效:
from matplotlib import pyplot as plt
plt.imshow(data, interpolation='nearest')
plt.show()
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Jupyter笔记本/实验室,请在导入matplotlib之前使用此内联命令:
%matplotlib inline
Run Code Online (Sandbox Code Playgroud)
unu*_*tbu 189
您可以使用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()
Run Code Online (Sandbox Code Playgroud)
Pet*_*sen 51
使用最短路径scipy
,如下所示:
from scipy.misc import toimage
toimage(data).show()
Run Code Online (Sandbox Code Playgroud)
这也需要安装PIL或Pillow.
类似的方法也需要PIL或Pillow,但可以调用不同的查看器:
from scipy.misc import imshow
imshow(data)
Run Code Online (Sandbox Code Playgroud)
Har*_*vey 12
我知道有更简单的答案,但这个答案会让您了解图像实际上是如何从 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
Run Code Online (Sandbox Code Playgroud)
显示一张图像的数组
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.]])
Run Code Online (Sandbox Code Playgroud)
创建空的 10 x 10 子图以可视化 100 个图像
import matplotlib.pyplot as plt
fig, axes = plt.subplots(10,10, figsize=(8,8))
Run Code Online (Sandbox Code Playgroud)
绘制 100 张图像
for i,ax in enumerate(axes.flat):
ax.imshow(digits.images[i])
Run Code Online (Sandbox Code Playgroud)
结果:
有什么作用axes.flat
?
它创建了一个 numpy 枚举器,因此您可以遍历轴以在其上绘制对象。
例子:
import numpy as np
x = np.arange(6).reshape(2,3)
x.flat
for item in (x.flat):
print (item, end=' ')
Run Code Online (Sandbox Code Playgroud)
小智 9
使用pillow的fromarray,例如:
from PIL import Image
from numpy import *
im = array(Image.open('image.jpg'))
Image.fromarray(im).show()
Run Code Online (Sandbox Code Playgroud)
小智 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
Run Code Online (Sandbox Code Playgroud)