python图像的高宽比

2024-09-28 20:48:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码来获得图像的纵横比

img0 = color.rgb2gray(io.imread("C:\\work\\TRAIN\\SET1\\bus.jpg"))
img0 = resize(img0, (40, 116))
ar = 1.0 * (img0.shape[1]/img0.shape[0])
print "aspect ratio: " 
print ar

输出是2.0。但事实并非如此。 对于宽度为116、高度为40的图像,纵横比应为116/40 = 2.9。在

我的计算哪里出错了?在


Tags: 代码io图像traincolorworkjpgar
2条回答

116/40将在python2.x上执行floor division(向下舍入到下一个整数)

使用类似float(img0.shape[1]) / img0.shape[0]的方法来获得浮点除法(这是python3.x上/运算符的默认行为)。在

最好的选择可能是使用from __future__ import division(作为脚本中的第一个导入),这将确保脚本在python2.x和python3.x上都使用浮点除法

您的问题是img0.shape[1]和img0.shape[0]都是整数。您已经执行了整数除法,然后将其转换为float。你可以试试:

float(img0.shape[1]) / img0.shape[0]

或者

^{pr2}$

或者,我推荐的方法是将此导入添加到文件的第一行代码中

from __future__ import division

这将使“/”始终执行浮点运算,以避免此类情况。如果您想特别使用整数除法,请使用“//”,如10//3所示

相关问题 更多 >