python - 通过数组循环过滤器的有效方法
问题描述
所以我正在做这门课程,在这个练习中,我必须使用数组的 3x3 区域来模糊图像,并将所有值换成平均值。所以我写了这个我知道仍然不能完全工作的函数:
def replace_avg(img, block=3):
x_dim, y_dim = img.shape
for row in range(1,x_dim-block+2,3):
for col in range(1,y_dim-block+2,3):
img[row-(block-2):row+(block-1),col-(block-2):col+(block-1)] = np.average(img[row-(block-2):row+(block-1),col-(block-2):col+(block-1)])
return img
我的问题是有没有一种更有效的方法可以使用 numpy 使用 3x3 过滤器循环遍历这个数组?
解决方案
skimage 包提供了一个完全符合您要求的功能:
from skimage import transform
img_rescaled = transform.rescale(img,1/block)
也许您正在寻找专门使用 Numpy 的解决方案,在这种情况下,您应该查看该函数在 skimage 模块中的编码方式
推荐阅读
- python - 聚类数据子组中的行
- sql-server - 在 SQL Server 的 ForXMLPath 查询中包含文本
- angular - Angular Reactive Forms 从 Type 生成表单控件
- curl - curl 的 RESTconf 操作
- python - 使用 Fast.AI 查找学习率/训练时出现 BrokenPipeError
- kotlin - Kotlin Coroutines:Kotlin Job() 对象有多轻量级?我可以将完成的作业留在 HashMap 中吗?
- python - 如何将 pandas_profiling 与大型数据库表一起使用
- android - AWS网关+lambda冷启动针对不同应用不同
- javascript - Vue-Multiselect 和 Vuex:预选商店中的值
- google-cloud-dataflow - 将内部对象的时间戳分配给 GenericRecord