图片格式导致的报错:Attribute Error: 'NoneType' object has no attribute 'astype' 解决方案 (已解决)

本文解决了一个常见的问题:使用cv2.imread加载图片时出现异常,原因是图片的实际格式与后缀名不符。文章详细解释了错误的原因,并提供了一个解决方案,即使用PIL库将所有图片统一转换为正确的jpg格式,避免因格式不一致导致的加载失败。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://blog.csdn.net/weixin_43826242/article/details/90325955

https://blog.csdn.net/weixin_43826242/article/details/90325955

原因:

(也可能是没加入mask的原因)

解决关键:验证数据集中的照片格式是否正确

出错的原因:

数据集中所有的照片虽然都是.jpg格式的,但是有的照片没有进行转码,只是更改了后缀,因此在模型加载的时候才会报错。

错误的原因正是因为后缀名和图片的实际格式不符,才会导致imread读入为空

可以使用PIL工具将所有的jpg图片转换成为jpg图片,从而避免这样的麻烦。

 

# 将所有的图片转换成为jpg格式(防止因为图片格式造成的cv2.imread()异常)
# 将所有的图片转换成为jpg格式(防止因为图片格式造成的cv2.imread()异常)

import PIL.Image as Image
import os
# 'DUT-OMRON', 'DUTS-TE', 'ECSSD', 'HKU-IS', 'PASCALS', 'SOD', 'THUR15K'
DataSet = ['HKU-IS', 'PASCALS', 'SOD', 'THUR15K']
for id, dataset in enumerate(DataSet):
	Path1 = '/home/nk/zjc/PycharmProjects/nk_GCPANet/data/'
	Path2 = dataset + '/Imgs/'

	filelist = os.listdir(Path1 + Path2)
	print(id, '=>', Path1 + Path2)
	filelist = sorted(filelist)
	for file in filelist:
		img = Image.open(Path1 + Path2 + file).convert('RGB')
		# print(img)
		img.save(Path1 + Path2 + file)
		print('=>', Path1 + Path2 + file)
		print('Done!')


# 将所有的图片转换成为jpg格式(防止因为图片格式造成的cv2.imread()异常)

import PIL.Image as Image
import os

Path = './SOD/'


def start(Path):
	filelist = os.listdir(Path + 'JPEGImages/')
	for file in filelist:
		img = Image.open(Path + 'JPEGImages/' + file).convert('RGB')
		# print(img)
		img.save(Path + file)
	print('Done!')

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机视觉-Archer

图像分割没有团队的同学可加群

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值