我使用的是iPython笔记本,我有一个512x512图像,我想用'最接近'的颜色插值'变换'为'块状'图像块,类似于Photoshop中的“马赛克”滤镜,以进一步处理一批图片。使用matplotlib和/或numpy创建块状图像的图像调色板的尺寸缩小
在Photoshop中,加载图像,并可以将过滤器设置为“马赛克”,并设置在像素中的“块大小”。
Here有一个关于如何使用numpy来做的部分解释,但是因为我不是一个numpy专家,所以我发现了一个'快捷方式',这对我来说是一种使用PIL的工作。我不知道如何适当调整它以避免一些不必要的步骤。
img = Image.open(filename)
h = img.size[0]
v = img.size[1]
blocksize = 100
rsize = img.resize((h/blocksize,v/blocksize)) # resize the image
rsizeArr = np.asarray(rsize)
lum_img = rsizeArr[:,:,0]
#plt.axes.get_xaxis().set_visible(False)
#plt.axes.get_yaxis().set_visible(False)
imgplot = plt.imshow(rsizeArr)
#imgplot = plt.imsave('test.jpg', rsizeArr)
imgplot.set_interpolation('nearest')
imgplot.axes.get_xaxis().set_visible(False)
imgplot.axes.get_yaxis().set_visible(False)
plt.savefig('testplot1.png', bbox_inches = 'tight')
由于我使用IPython的笔记本,这只要在执行生产线生产的笔记本内嵌输出。 (我不想显示此特定步骤的内联输出,因为我将在笔记本中处理多张图片)。
的“tesplot1.png”文件的大小1KB,但是,出于某种原因,它的尺寸获取的减少为264x264像素。因为我想在512×512的原大小的图像,我做到以下几点:
img2 = Image.open('testplot1.png')
rsize = img2.resize((512,512)) # resize the image
rsize.save('testplot2.jpg')
这将生成512×512像素的右侧图像。
我的问题是: 1)有没有办法产生的图像不必通过imgplot = plt.imshow(rsizeArr)内联显示它?我需要在我的笔记本上内联pylab,所以我不知道它是否可以“暂时”禁用。 2)有没有办法通过将'tesplot1.png'保存为合适的大小来忽略大小调整步骤(img2)? 3)使用解释here完成此操作所需的矢量操作是什么?
谢谢你马特。我找到了另一个解干杯 –