这是一个XML文件,我想在其中使用python获取边界框坐标。您会看到有一个BBox属性,它的十六进制字符串包含(x1,y1,x2,y2)。
我使用python解析边界框信息,但问题是如何将这16位六进制值转换为人类可以理解的整数值,我们将其视为对象边界坐标值。
我使用了int('hex str', 16)
,但是它给出了一个很大的整数值,这显然不像是800x1200尺寸图像的坐标值。在这种情况下,BBox的第一个值为“ 4074145c00000005”,转换后我得到4644359501095370757。
请给我一个解决方案,如何将边界框坐标转换为人类可以理解的整数值。
答案 0 :(得分:0)
最后,我得到了将这个16位十六进制字符串转换为人类可以理解的十进制/整数值的解决方案。此值表示使用enter link description here中说明的IEEE 784标准转换。这个16位十六进制值用于表示浮点转换,以更精确地定位坐标。
tab = ['0000000000000000', '408a500000000000', '4082980000000000', '0000000000000000']
int_val = [int(struct.unpack('!d', str(t).decode('hex'))[0]) for t in tab]
print "convert to int : ", int_val
函数struct.unpack(format, buffer)
用于转换具有两个参数的函数。第一个参数用于格式!d
,其中d
表示C中为Double或python中为float,并且!
符号用于指示字节顺序。@, =, <, >, !
用于表示5个字节顺序我需要转换哪种格式。