首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >优化性能以使用最大像素值调整大小

优化性能以使用最大像素值调整大小
EN

Stack Overflow用户
提问于 2017-04-10 06:37:39
回答 1查看 281关注 0票数 0

我想通过只保留每个像素组的最大像素值来减小图像的一个大小。我用python实现了这一点:

代码语言:javascript
运行
复制
def pixel_max_resize(img, h, w):    
    imr = np.zeros((h,w),  dtype=np.uint8)
    r = int(h/w)    
    for j in range(0,w):
         imr[:,j] = np.amax(img[:,j*r:j*r+r], axis = 1) 
    return imr

这个函数比相同大小的cv2.resize慢得多(慢5-10倍)。有谁知道如何优化这个函数的速度吗?有没有一种列表理解的公式可以加速这个过程?

EN

回答 1

Stack Overflow用户

发布于 2017-04-10 22:09:48

我不能百分之百确定你想要实现什么,因为如果目标高度不等于源高度,你的代码就会抛出错误。无论如何,这里有一个函数,它根据每个子采样区域的最大值调整图像的大小。它大约比你的代码快3-5倍。

代码语言:javascript
运行
复制
def pixel_max_resize(img, h, w):
    source_h, source_w = img.shape
    return img.reshape(h,source_h // h,-1,source_w // w).swapaxes(1,2).reshape(h,w,-1).max(axis=2)

(注意:源的宽度和高度必须分别是目标宽度和高度的整数倍)

说明:

源2d图像被划分成3d阵列,使得第一和第二轴具有目标宽度和高度的大小,并且第三轴包含要对一个目标像素进行二次采样的所有像素的值。此轴上的max()将返回每个子采样的最大值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43312678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档