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

OpenCV给图像加文字生成视频时背景未重置、文字重叠问题咨询

问题根因

cv2.imread()返回的图像是Numpy数组格式,在Python中直接执行frame_img = bg_img属于引用赋值,并没有生成新的独立图像副本,两个变量指向内存中同一块图像数据。
因此你调用cv2.putText()在frame_img上绘制文字时,实际修改的是原始的bg_img背景图数据,循环到下一帧时拿到的bg_img已经是上一轮画过文字的版本,自然就出现了文字层层叠加的效果。
而你每次循环重新读取背景图的写法,相当于每次都从磁盘加载原始的干净背景,所以不会有叠加问题,但会产生不必要的磁盘IO开销。

修复方案

只需要在每次重置帧时,调用Numpy数组的copy()方法生成原始背景的独立副本即可,无需重复读取磁盘文件:

bg_img = cv2.imread('background_image.jpg')
for frame_num in range(n_frames):
  print(f'Frame: {frame_num}')
  frame_img = bg_img.copy() # 生成背景的独立副本,修改不会影响原bg_img
  for gxi in range(gxn):
    for gyi in range(gyn):
      txt = str(int(np_vec[frame_num,gyi,gxi,feature_index]))
      loc = (int((gxi+0.4)*gxd),int((gyi+0.7)*gyd))
      cv2.putText(frame_img, txt, loc, font, fontScale, font_color, text_thickness, cv2.LINE_AA)
  vidout.write(frame_img.astype(np.uint8))
vidout.release()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:54:04