python - 如何将边界框六进制值转换为整数?
问题描述
这是一个 XML 文件,我想在其中使用 python 获取边界框坐标。您可以看到有一个 BBox 属性,其中包含 (x1,y1,x2,y2) 的十六进制字符串。
我使用 python 解析边界框信息,但问题是如何将这个 16 位十六进制值转换为人类可读的整数值,我们熟悉将其视为对象边界坐标值。
我用过int('hex str', 16)
,但它给出了一个很大的整数值,这显然不像 800x1200 尺寸图像的坐标值。在这种情况下,BBox 的第一个值是“4074145c00000005”,我在转换 4644359501095370757 后得到。
请给我一个解决方案,如何将此边界框坐标转换为人类可以理解的整数值。
解决方案
最后,我得到了将这个 16 位十六进制字符串转换为人类可以理解的十进制/整数值的解决方案。此值表示使用 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 个字节顺序@, =, <, >, !
用于表示我需要转换的格式。
推荐阅读
- python - FastAPI:检索 jinja2 `url_for` 的端点以提供跳转链接
- c# - 当涉及高速网络消息传递时,使用易失字典是一个不错的选择吗?
- javascript - 渲染子菜单的问题对于 React JS 中的 infiinit 下拉菜单
- python - PyInstaller & NSIS Zip2Exe - 在你的电脑之外引用文件
- r - 将跨距离矩阵从“Crossdist”类转换为矩阵
- r - 通过取平均值来组合具有相似名称的列
- macos - 无法通过 SSH 获取钥匙串密码
- google-apps-script - 根据用户输入将数据从 Google 表格中提取到 html 页面
- azure - Azure 应用程序网关无法更新证书,说它太大
- c# - 正则表达式替代选择错误的匹配