ValueError: operands could not be broadcast together with shapes (416,416,4) (3,)

在深度学习训练中遇到ValueError,原因是读取了四通道图像而非三通道RGB图片。解决方法包括直接跳过非三通道图片或将其转换为三通道。四通道图像包含额外的Alpha通道,用于表示透明度,通过Alpha混色公式计算显示颜色。
摘要由CSDN通过智能技术生成

1.问题描述

在深度学习训练、读取图片时,遇到下面问题

ValueError: operands could not be broadcast together with shapes (416,416,4) (3,)

2.原因分析

一般是读三通道的图片,即RGB图片,而根据报错情况,可以看到图片是四通道,此外还有灰度图是单通道也会类似情况。

3.处理方法

3.1 直接跳过非三通道图片
for img in imgs:
        img = os.path.join(root, img)
        img=cv2.imread(img)
        img=cv2.resize(img,(416,416))
        if img.shape[2] != 3:
            continue
3.2 将非三通道图片转为三通道图片
from PIL import Image
if im.shape[2] == 4:
  im = Image.open(im_path).convert("RGB")

4.四通道相关知识

在图像处理中,真彩位图文件的每个通道都定义为 8 位,可以提供 256 个级别的强度。因此,一个 RGB 文件是 24 位的,具有 256 个级别(都带有红、绿和蓝)。而RGBA 文件(红、绿、蓝、alpha)是 32 位的,具有额外的 8 位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值