报错如下图所示,虽然不影响模型训练,但最终还是想办法来解决它。
import os
from PIL import Image
dir_path = r'F:\pycharm-workspace\selfCreateDataset_\normal'
for filename in os.listdir(dir_path):
if filename.endswith('.jpg') or filename.endswith('.jpeg') or filename.endswith('.png'):
image_path = os.path.join(dir_path, filename)
with Image.open(image_path) as img:
exif_data = img._getexif()
if exif_data and 271 in exif_data:
make = exif_data[271]
if 'samsung' in make.lower():
print(f"{filename} was taken with a Samsung device.")
else:
print(f"{filename} was not taken with a Samsung device.")
else:
print(f"{filename} has no EXIF data.")
上述代码主要是检测图片的EXIF信息,EXIF指的是 Exchangeable Image File Format,是一种存储在数字图像文件中的元数据标准,它可以记录拍摄日期、时间、地点、相机型号、曝光参数、ISO等拍摄信息。一些图片处理软件可以读取和修改EXIF信息,方便用户管理和查看照片信息。
通过比对可以找出哪些图片是三星手机拍摄的,如果图片不多的话,可以手动用电脑的画图打开,重新保存。如果图片较多的话,可以直接使用cv2读取图片,然后再保存,代码如下:
import os
import cv2
# 定义要读取的文件夹路径和保存的文件夹路径
src_folder = r'C:\Users\xiaohaha\Desktop\questionImage'
dst_folder = r'C:\Users\xiaohaha\Desktop\questionImage2'
# 创建保存图片的文件夹
if not os.path.exists(dst_folder):
os.makedirs(dst_folder)
# 遍历读取文件夹中的图片文件
for file_name in os.listdir(src_folder):
# 判断文件是否是图片文件(这里仅判断后缀名)
if file_name.endswith('.jpg') or file_name.endswith('.png'):
# 构造完整路径
file_path = os.path.join(src_folder, file_name)
# 使用cv2读取图片
img = cv2.imread(file_path)
# 保存图片到目标文件夹中
save_path = os.path.join(dst_folder, file_name)
cv2.imwrite(save_path, img)
因篇幅问题不能全部显示,请点此查看更多更全内容