我想通过只保留每个像素集的最大像素值来缩小图像的大小。我用python实现了这一点:
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倍)。有人知道如何优化这个函数的速度吗?有没有一个列表理解公式可以加快这个过程?你知道吗
我不是100%确定你想要达到什么,因为如果目标高度不等于源高度,你的代码会抛出一个错误。无论如何,这里有一个函数,它根据每个子采样区域的最大值调整图像的大小。它比你的代码快3-5倍。你知道吗
(注意:源宽度和高度必须分别是目标宽度和高度的整数倍)
说明:
源2d图像被分割成3d阵列,使得第一和第二轴具有目标宽度和高度的大小,并且第三轴包含针对一个目标像素要二次采样的所有像素的值。
max()
在这个轴上返回每个子样本的最大值。你知道吗相关问题 更多 >
编程相关推荐