首页 其他比赛 帖子详情
为什么?有些数据用cv2.imread()读取的是None
收藏
快速回复
其他比赛 问答学习资料 813 3
为什么?有些数据用cv2.imread()读取的是None
收藏
快速回复
其他比赛 问答学习资料 813 3

如我最后的测试集,240张图片,但是有2张读取是None,最后的提交只有238个数据

0
收藏
回复
全部评论(3)
时间顺序
r
ruocen
#2 回复于2022-10

是因为有些图片异常,或者不规范,你换其他方法读取试试

1
回复
Farewell@
#3 回复于2022-10

已经解决了,用Image谢谢哈

 

1
回复
SunshineSTY
#4 回复于2023-05

# 23.5.9 数据文件清洗。在transform时发现一些cv2.readim()错误的文件,导致训练挂死,需要转换清洗
import os
import cv2
from PIL import Image

# 执行一遍再次执行,可以发现已经没有cv2.imread为空的文件了,清洗完成
directory = "/home/aistudio/work"
for subdir in ["cat_12_predict", "cat_12_train"]:
    subdir_path = os.path.join(directory, subdir)
    for filename in os.listdir(subdir_path):
        filepath = os.path.join(subdir_path, filename)
        # 23.5.9 遇到可能的cv2.imread问题的图像文件,先进行转换,避免transform的时候出错
        if cv2.imread(filepath) is None:
            print(filepath)
            img = Image.open(filepath).convert('RGB')
            # 23.5.9 先完全遍历并变换格式,让cv2可以识别
            img.save(filepath)
            print('finish saving')

2
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户