报错:could not broadcast input array from shape (128,128,3) into shape (128,128)

最近在运行论文的开源代码时报错:could not broadcast input array from shape (7,7,16) into shape (7,7)
参考了这篇博客得以解决:https://blog.csdn.net/z704630835/article/details/86525973

def make_mosaic(images, num_rows, num_cols, border=1, class_names=None):
    num_images = len(images)
    image_shape = images.shape[1:]   #(7,7,16,1)
    mosaic = ma.masked_all(
            (num_rows * image_shape[0] + (num_rows - 1) * border,
             num_cols * image_shape[1] + (num_cols - 1) * border),
            dtype=np.float32)
    paddedh = image_shape[0] + border
    paddedw = image_shape[1] + border

    for image_arg in range(num_images):
        row = int(np.floor(image_arg / num_cols))
        col = image_arg % num_cols
        image = np.squeeze(images[image_arg])   #(7,7,16)
        image_shape = image.shape  #(7,7,16)
        mosaic[row * paddedh:row * paddedh + image_shape[0],
         col * paddedw:col * paddedw + image_shape[1]] = image

    return mosaic

原因:图片质量参差不齐,甚至有的图片是4维的,运行该程序后直接报错

解决方法:在对image进行如下操作:

      try:
          if img.shape[2] == 3:
                img = cv2.transform.resize(img, (image.shape[0], image.shape[1])
      except:
            continue
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值