scipy 如何每30个像素对图像进行切片[关闭]

qaxu7uf2  于 2023-06-06  发布在  其他
关注(0)|答案(1)|浏览(143)

**已关闭。**此问题不符合Stack Overflow guidelines。目前不接受答复。

这个问题似乎不是关于在help center定义的范围内编程。
3天前关闭。
Improve this question
我的作业中有一个问题,要求每30个像素对图像进行切片。这是否意味着我必须将图像划分为30x30像素的正方形?图片如下:

import matplotlib.pyplot as plt
from scipy import ndimage
from scipy import misc
face = misc.face(gray=True)
plt.imshow(face, cmap=plt.cm.gray)
plt.show()

如果图像是768 x 1024像素,我是否必须删除0,30,60,90...在x轴上,0,30,60,90…在y轴上?
这将工作:

face = face[::30,::30]
mbyulnm0

mbyulnm01#

我不确定我是否完全遵循了你的愿望,但是如果你想将图像划分为30x30子图像,可以这样做:

n, m = face.shape  # (768, 1024)
sub_images = [face[i:i+30, j:j+30] for i in range(0,n,30) for j in range(0,m,30)]
# plot the megapixels you have cut off 
fig, ax = plt.subplots(n//30+1, m//30+1, figsize=(10,10))
for idx, im in enumerate(sub_images):
    ax.flatten()[idx].imshow(im, cmap='gray')
    ax.flatten()[idx].set_axis_off()
plt.show()

这样,你就有了一个包含所有子图像的列表,默认情况下,这些子图像是30x30的,除非它们在边框上。

相关问题