繁体   English   中英

python中准确的图像宽高比

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM