[英]accurate image aspect ratio in 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
。
我的计算哪里出错了?
116/40
将在Python 2.x上进行地板分割 (向下舍入到下一个整数)。
使用类似float(img0.shape[1]) / img0.shape[0]
来进行浮点除法(这是Python 3.x上/
运算符的默认行为)。
最好的选择可能是使用from __future__ import division
(作为脚本中的第一个导入)-这将确保您的脚本将在Python 2.x和Python 3.x上都使用浮点分区。
您遇到的问题是img0.shape [1]和img0.shape [0]都是整数。 您已经执行了整数除法,然后将其转换为浮点数。 您可以尝试:
float(img0.shape[1]) / img0.shape[0]
要么
1.0 * img0.shape[1] / img0.shape[0]
或者,我推荐的方法是在此导入文件的第一行添加代码
from __future__ import division
这将使“ /”始终执行浮点计算,以避免这种情况。 如果要专门使用整数除法,请使用“ //”,如10 // 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.