python读取文件名或路径含中文字符的图片并从中筛选出全白或者全黑的图片

之前做样本的时候已经写过这部分代码
只不过筛选的是全黑的样本图和其对应的真实影像

那么当真实影像图包含白色图片而且文件名包含中文字符了怎么办

大家知道imread无法读取路径和图片名称含中文字符的图片
那么
if cv2.countNonZero(img) == 0:
这个判断方法也不能使用了

于是这里介绍另外的方法
我使用了

img = cv2.imdecode(np.fromfile(path, dtype=np.uint8), -1)  # 读入完整图片,见下面解释  

来读取图片
那么判断方法是使用了nump里面的函数
如果数组的平均值为255那么图片就是白色的
同样的可以检测黑色或者其他颜色的图片

而且中文命名的图片也没问题
完整代码如下:

# -*- coding: utf-8 -*-
"""
Created on Wed July 19 11:44:46 2022

@author:Laney_Midory
csdn:Laney_Midory
"""
import cv2
import os
from osgeo import gdal
import numpy as np
import shutil

inPath = "C:/Users/Administrator/Desktop/DeepGlobe-Road-Extraction-link34/dataset/v/"
outPath = "C:/Users/Administrator/Desktop/DeepGlobe-Road-Extraction-link34/dataset/valid/"
newPath = "C:/Users/Administrator/Desktop/DeepGlobe-Road-Extraction-link34/dataset/white/"

for f in os.listdir(outPath):
	path = outPath + f.strip()    
	if not os.path.exists(path):        
		continue;    
	img = cv2.imdecode(np.fromfile(path, dtype=np.uint8), -1)  # 读入完整图片,见下面解释  
	data_encode = np.array(img) 
	
	if np.mean(data_encode) == 255:        
		print("Image is white")        
		print(path)        
		print(newPath+f.strip())
		shutil.move(path,newPath+f.strip())

print("finish!")  

	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Laney_Midory

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值