为了账号安全,请及时绑定邮箱和手机立即绑定

无法绘制图像周围已移除空白的图像

无法绘制图像周围已移除空白的图像

Cats萌萌 2023-02-15 15:52:22
我有以下生成分形图像的代码,import numpy as npimport matplotlib.pyplot as pltdef julia(C):    X = np.arange(-1.5, 1.5, 0.2)    Y = np.arange(-1.5, 1.5, 0.2)    pixel = np.zeros((len(Y), len(X)))    for x_iter, x in enumerate(X):        for y_iter, y in enumerate(Y):            z = x + 1j * y            intensity = np.nan            r = np.empty((100, 100)) # Unused at the moment            for n in range(1, 1024):                if abs(z) > 2:                    intensity = n                    break                z = z**2 + C            pixel[y_iter, x_iter] = intensity            r.fill(intensity) # Unused at the moment    # We return pixel matrix    return pixel# Compute Julia set imagepixel = julia(-0.7 + 0.27015j)# Plottingprint(pixel[:,:])数据(像素)如下:array([[  1.,   2.,   2.,   2.,   2.,   2.,   2.,   2.,   2.,   2.,   2.,          2.,   2.,   2.,   2.],       [  2.,   2.,   2.,   2.,   2.,   2.,   2.,   2.,   2.,   2.,   2.,          2.,   2.,   2.,   2.],       [  2.,   2.,   2.,   2.,   2.,   2.,   2.,   3.,   3.,   3.,   3.,          3.,   2.,   2.,   2.],       [  2.,   2.,   2.,   2.,   3.,   3.,   3.,   4.,   5.,   4.,   4.,          3.,   3.,   3.,   2.],       [  2.,   2.,   3.,   3.,   3.,   4.,   4.,   7., 209.,   6.,   5.,          4.,   4.,   3.,   3.],       [  2.,   3.,   3.,   3.,   4.,   5.,   6.,  37.,  59., 220.,  13.,          7.,  10.,   6.,   4.],绘制数据(像素)后,它看起来像plt.axis('off')plt.imshow(pixel)拿到图片后我做了plt.savefig(),当我做image.open()的时候,数据变成了下面这样!我需要摆脱所有这些 255 强度对应的边界不需要的空白
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

您可以使用以下脚本来保存周围没有空格的图像:


# Plotting

from PIL import Image

min_value = np.nanmin(pixel)

max_value = np.nanmax(pixel)

pixel_int = (255*(pixel-min_value)/(max_value-min_value)).astype(np.uint8)

# sample LUT from matplotlib

lut = (plt.cm.viridis(np.arange(256)) * 255).astype(np.uint8) # CHOOSE COLORMAP HERE viridis, jet, rainbow

pixel_rgb = lut[pixel_int]

# changing NaNs to a chosen color

nan_color = [0,0,0,0] # Transparent NaNs

for i,c in enumerate(nan_color):

  pixel_rgb[:,:,i] = np.where(np.isnan(pixel),c,pixel_rgb[:,:,i])

# apply LUT and display

img = Image.fromarray(pixel_rgb, 'RGBA')


# Saving image and matrix

img.save('julia.png')

np.save('julia.npy', pixel)


# Delete data

del(img, pixel)


# Loading image and matrix

img = Image.open('julia.png')

pixel = np.load("julia.npy")


# Show image

img.show()


print(pixel)

print(min_value, max_value)

每个数组值将获得一个像素。X和轴的 2 个分辨率的输出Y:


X,Y = (np.arange(-1.5, 1.5, 0.2),)*2: //img1.sycdn.imooc.com//63ec8f7e000176e101540172.jpg

X,Y = (np.arange(-1.5, 1.5, 0.02),)*2:


查看完整回答
反对 回复 2023-02-15
  • 1 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号