?1,路徑中包含中文
2,路徑壓根不存在
3,路徑存在但是不是正常的.jpg或則.png等圖片格式的文件,用CV2.imread 或者cv2.resize 讀取或者處理就會出現(xiàn)以上問題。
我的問題就是第三種情況,因為數(shù)據(jù)集很大,不知道怎么去找究竟是那個圖片或者那個文件出了問題,因為大部分的數(shù)據(jù)集文件都可以處理,不知道咋地混入了一些非圖片文件,結(jié)果讀取的時候就一直報錯,但就是找不到原因。
解決方案1:在dataloader 文件中在路徑分離的for循環(huán)內(nèi)通過try ,except 的方式跳過不能進行CV2讀取或者處理的數(shù)據(jù)標(biāo)簽和路徑
成功處理結(jié)果如下:就可以把跳過的路徑答應(yīng)出來,就找到了問題的癥結(jié)在那里。
處理方法2(對數(shù)據(jù)集進行處理)
?通過代碼,遍歷整個數(shù)據(jù)集把后綴名不是.jpg 或者.png的圖片進刪除。代碼如下,最后再重新編碼路徑就行了;
# __Author:Wu
# date: 2019/12/3
# 工具功能:
# 遍歷指定文件夾,留下需要的文件(使用后綴名識別),并且刪除空文件夾
# 隨后刪除指定文件夾。(可選)
# 然后把這個文件夾壓縮
import os
import sys
import shutil
import zipfile
def fileFilter(dirpath):
? ? for root, dirs, files in os.walk(dirpath):
? ? ? ? for file in files:
? ? ? ? ? ? # 獲取文件所屬目錄
? ? ? ? ? ? # 獲取文件路徑
? ? ? ? ? ? rFindFileIndex = file.rfind('.')
? ? ? ? ? ? fileExtname = file[rFindFileIndex + 1:]
? ? ? ? ? ? # 刪除指定后綴名的文件
? ? ? ? ? ? # if not (fileExtname == 'jpg' or fileExtname == 'png' or fileExtname == 'zip'):
? ? ? ? ? ? if not (fileExtname == 'jpg' or fileExtname == 'png' or fileExtname == 'PNG'):
? ? ? ? ? ? ? ? os.remove(os.path.join(root, file))
? ? ? ? ? ? ? ? print('刪除不需要的文件' + file)
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? pass
? ? ? ? ? ? # 刪除空文件夾
? ? ? ? if not os.listdir(root):
? ? ? ? ? ? print("文件夾" + root + "為空,刪除")
? ? ? ? ? ? os.rmdir(root)
? ? ? ? # 刪除指定名稱的文件夾
? ? ? ? # for roots in root:
? ? ? ? # ? ? if roots == '新建文件夾':
? ? ? ? # ? ? ? ? shutil.rmtree(roots)
? ? ? ? # ? ? ? ? os.mkdir(roots)
? ? print("已留下所需文件")
# 刪除空文件夾
def delete_null_dirs(dires):
? ? dirs_list = []
? ? for root, dirs, files in os.walk(dires):
? ? ? ? dirs_list.append(root)
? ? for root in dirs_list[::-1]:
? ? ? ? if not os.listdir(root):
? ? ? ? ? ? print("刪除空目錄:" + root)
? ? ? ? ? ? os.rmdir(root)
# 壓縮文件夾
def zipdir(srcPath, dstname):
? ? workzip = zipfile.ZipFile(dstname, "w", zipfile.ZIP_DEFLATED)
? ? for dirpath, dirs, files in os.walk(srcPath):
? ? ? ? for filename in files:
? ? ? ? ? ? workzip.write(os.path.join(dirpath, filename))
? ? ? ? ? ? print(filename + "壓縮完成")
? ? workzip.close
# 獲取操作文件夾名稱
def direname(dirspath):
? ? finddirIndex = dirpath.split("\\")
? ? global dirname
? ? dirname = finddirIndex[-1]
if __name__ == "__main__":
? ? # dirpath = str(input("請輸入要處理的文件夾路徑"))
? ? # dirname = ''
? ? #
? ? dirpath = "arcM"
? ? delete_null_dirs(dirpath)
? ? fileFilter(dirpath)
? ? # direname(dirpath)
? ? # zipdir(dirpath, dirname + ".zip")
? ? print("完成,按任意鍵退出")
? ? input()文章來源:http://www.zghlxwxcb.cn/news/detail-782996.html
? ??文章來源地址http://www.zghlxwxcb.cn/news/detail-782996.html
到了這里,關(guān)于error: (-215:Assertion failed) !ssize.empty() in function ‘cv::resize‘分析及解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!