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

cv2.putText传入动态x坐标时,文本未按预期左移的问题

问题根源

  • 你用固定k +=20的步长计算x坐标,本质是默认单字符宽度为20px,但实际使用cv2.FONT_HERSHEY_SIMPLEX、字号1的场景下,单字符实际像素宽度只有10-15px,和预估宽度偏差很大。
  • 你预期的左移效果,本质是要让文本块的右边缘固定在x=300位置,随字符串变长,文本向左延伸,右边缘始终不动。但当前逻辑下,文本右边缘位置是x_org + 字符串实际宽度 = (300-20*按键次数) + 实际总宽度,因为每次扣减的20px远大于单字实际宽度,右边缘会随按键不断左移,根本不是固定锚点。
  • 视觉感知层面,文本起点左移的区域原本是空白背景,你不会把空白处的边界变化当成“文本在移动”,只会捕捉到文本块内部字符的排版变化,最终觉得文本只是变长了,没有产生预期的整体左移效果。另外cv2.putText的坐标是文本的左下角锚点,从该点开始向右绘制整串文字,不存在“整体平移”的默认逻辑,所有位置变化都是逐帧重绘整串文字带来的。

修复方法

  • 放弃用固定步长k计算x坐标,改用cv2.getTextSize()提前获取当前sen的实际像素宽度,基于真实宽度计算x_org,保证文本右边缘始终锚定在x=300的位置:
    1. 绘制前先计算文本实际尺寸:(text_w, text_h), _ = cv2.getTextSize(sen, cv2.FONT_HERSHEY_SIMPLEX, 1, 1)
    2. 计算x坐标:x_org = 300 - text_w
  • 调整后,不管sen有多长,文本块的右边缘永远固定在x=300的位置,新增字符时文本起点会随实际宽度增加自动左移,能直观看到文本向左延伸的效果。原来的k变量可以保留用来控制其他逻辑,不需要再参与坐标计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 02:54:01