【问题标题】:openCV text on image - background image does not clear图像上的openCV文本 - 背景图像不清晰
【发布时间】:2021-10-27 00:42:35
【问题描述】:

我希望在图像上打印文本并从中创建一个视频,以便直观地查看一些数据(以及它是如何变化的)。

我想加载背景图像一次,然后每帧使“frame_img”等于背景图像,然后在帧上打印值:

bg_img = cv2.imread('background_image.jpg')
for frame_num in range(n_frames):
  print(f'Frame: {frame_num}')
  frame_img = bg_img #reset frame to background
  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()

我遇到的问题是结果框架的文本相互重叠,就好像 frame_img 没有被重置为背景一样

以下工作,但我不想每次都读取背景图片:

for frame_num in range(n_frames):
  print(f'Frame: {frame_num}')
  frame_img = cv2.imread('background_image.jpg') #reset frame to background
  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()

知道背景图像 (frame_img) 没有被重置的原因吗?

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    问题出在这一行

    frame_img = bg_img
    

    您正在分配对对象的引用而不是值。解决方案是像这样分配原始图像的副本

    frame_img = bg_img.copy()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多