gpt4 book ai didi

alignment - 计算 QR 码对齐图案的位置

转载 作者:太空狗 更新时间:2023-10-30 00:19:30 27 4
gpt4 key购买 nike

我需要知道如何计算 the table of ISO/IEC 18004:2000 Annex E 中定义的 QR 码对齐模式的位置.

我不明白它是如何计算的。如果以版本 16 为例,则使用 {6,26,50,74} 计算位置,点之间的距离为 {20,24,24}。如果点之间的距离 {22,24,22} 分布更均匀,为什么不是 {6,28,52,74}?

我想知道如何按程序生成它。

最佳答案

虽然规范确实提供了一个对齐表,但这是一个合理的问题(我发现自己有这个问题:-))——程序生成位置的可能性有其优点(不易打错的代码,更小的代码足迹,了解位置的模式/属性)。

我很高兴地报告,是的,存在一个程序(甚至相当简单)。规范本身说明了大部分内容:

[The alignment patterns] are spaced as evenly as possible between the Timing Pattern and the opposite side of the symbol, any uneven spacing being accommodated between the timing pattern and the first alignment pattern in the symbol interior.

也就是说,只有第一个和第二个坐标之间的间隔可能与其余间隔不同。其余的必须相等。当然,另一个重要的一点是,要让 AP 同意时序模式,间隔必须是偶数。剩下的棘手部分就是正确进行舍入。

无论如何 - 这是打印对齐位置表的代码:

def size_for_version(version):
return 17 + 4 * version

def alignment_coord_list(version):
if version == 1:
return []
divs = 2 + version // 7
size = size_for_version(version)
total_dist = size - 7 - 6
divisor = 2 * (divs - 1)
# Step must be even, for alignment patterns to agree with timing patterns
step = (total_dist + divisor // 2 + 1) // divisor * 2 # Get the rounding right
coords = [6]
for i in range(divs - 2, -1, -1): # divs-2 down to 0, inclusive
coords.append(size - 7 - i * step)
return coords

for version in range(1, 40 + 1): # 1 to 40 inclusive
print("V%d: %s" % (version, alignment_coord_list(version)))

关于alignment - 计算 QR 码对齐图案的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27658209/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com