gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:20:44 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/13238704/

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