You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何打印符合指定尺寸的Charuco板?打印尺寸不符的疑问

Charuco标定板打印尺寸偏差问题解答

核心结论

不是必须用PDF/SVG格式才能维持尺寸,但PNG作为位图,打印时易因缩放设置导致物理尺寸偏差;SVG/PDF这类矢量格式能更精准保证标定板实际尺寸,避免像素缩放误差。

为什么PNG打印尺寸不对

你当前代码生成固定600×600像素的PNG图,打印时系统会按设备DPI(每英寸像素数)自动缩放,不会直接对应你设置的0.05米/0.03米物理尺寸。比如用96DPI设备打印600像素边长的图,实际边长约6.25英寸(≈15.87厘米),和目标的0.15米(3×0.05米)偏差明显。

解决办法

方法1:调整PNG生成参数,匹配物理尺寸

通过计算将目标物理尺寸转换为对应DPI的像素数,步骤如下:

  1. 计算Charuco板总物理尺寸:3×3方块,每个0.05米,总宽/高=3×0.05=0.15米。
  2. 确定打印DPI(常用300DPI,保证打印清晰度)。
  3. 转换为像素数:像素数 = 物理尺寸(米) × DPI ÷ 0.0254(0.0254为米与英寸的换算系数)。

修改后的代码示例:

import cv2

# 创建字典和Charuco板
d = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_4X4_50)
charuco = cv2.aruco.CharucoBoard_create(3, 3, 0.05, 0.03, d)

# 计算目标像素尺寸(按300DPI)
dpi = 300
total_size_m = 3 * 0.05
total_pixels = int(total_size_m * dpi / 0.0254)

# 生成并保存图像
img = charuco.draw((total_pixels, total_pixels))
cv2.imwrite("charuco_correct.png", img)

打印时选择**“实际尺寸”“不缩放”**选项,即可得到符合预期的物理尺寸。

方法2:使用SVG/PDF矢量格式

矢量图存储几何路径而非像素,打印时可直接指定物理尺寸,无缩放失真。OpenCV不支持直接生成SVG,可借助第三方库(如svgwrite)实现:

import svgwrite
from svgwrite import mm

dwg = svgwrite.Drawing('charuco.svg', profile='tiny')
square_size = 50  # 50mm = 0.05m
marker_size = 30  # 30mm = 0.03m
squares_x, squares_y = 3, 3

# 绘制方块与标记(需替换标记为真实ArUco图案)
for y in range(squares_y):
    for x in range(squares_x):
        # 白色方块
        dwg.add(dwg.rect(insert=(x*square_size*mm, y*square_size*mm), 
                         size=(square_size*mm, square_size*mm), 
                         fill='white', stroke='black'))
        # 标记位置(方块中心)
        marker_pos = (x*square_size + (square_size - marker_size)/2, 
                      y*square_size + (square_size - marker_size)/2)
        # 示例:黑色矩形代替真实ArUco标记(需按字典生成对应黑白图案)
        dwg.add(dwg.rect(insert=(marker_pos[0]*mm, marker_pos[1]*mm), 
                         size=(marker_size*mm, marker_size*mm), 
                         fill='black'))

dwg.save()

生成的SVG可直接按实际尺寸打印,无需调整缩放。

内容的提问来源于stack exchange,提问作者vacky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:31:41