如何解决将图像从一个文件夹中分离出来,然后放入另一个文件夹中
我是python的新手,我正尝试从三个文件夹中加载图像,我想根据它们的名称结尾区分它们并放入新文件夹中。 例如,某些图像以1550_R_1、1500_R_2等结束,而某些图像以1500_1、1500_2等结束。 我怎样才能做到这一点? 我能够加载所有图像。
**import cv2
import os
import numpy as np
from shutil import copyfile
import matplotlib.image as mpimg
import glob
def load_images_from_folder(folder):
images = []
for filename in os.listdir(folder):
img = cv2.imread(os.path.join(folder,filename))
if img is not None:
images.append(img)
return images
folders = [
'C:/Users/shiva/OneDrive/Desktop/WORK/Bildverarbeitung_Reaktion/Pictures/I3te_Reaktion','C:/Users/shiva/OneDrive/Desktop/WORK/Bildverarbeitung_Reaktion/Pictures/4te_Reaktion','C:/Users/shiva/OneDrive/Desktop/WORK/Bildverarbeitung_Reaktion/Pictures/5te_Reaktion',]
for folder in folders:
images = load_images_from_folder(folder)
all_images = [img for folder in folders for img in load_images_from_folder(folder)]
print(len(all_images))
print(all_images)
i=150
for N in range(i):
for filename in all_images:
if any([filename.endswith(x) for x in ['1550_R_N.jpeg','1550_N','.jpeg','.jpg']]):
cv2.imwrite(dir_name,filename)**
但这会引发错误
if any([filename.endswith(x) for x in ['1550_R_N.jpeg','.jpg']]):
File "C:\Users\shiva\PycharmProjects\pythonProject\isabella.py",line 59,in <listcomp>
if any([filename.endswith(x) for x in ['1550_R_N.jpeg','.jpg']]):
AttributeError: 'numpy.ndarray' object has no attribute 'endswith'
解决方法
我建议使用regular expression来完成您想做的事情。正则表达式是您定义并尝试匹配的模式。所以也许您的代码看起来像这样:
import re
[your existing code]
for filename in all_images:
if re.match(r'.*_R_N.*',filename):
print("Filename has '_R_N' in it,do something")
else:
print("filename doesn't have '_R_N' in it (so maybe it only has "_N" in it)")
正则表达式函数match
查找包含在字符串中的_R_N
。如果找不到匹配项,则返回值为none
,因此不满足if
条件。您可以尝试各种正则表达式模式以满足您的需求。
要修复错误/异常;更改功能以将文件名与图像保持为元组。
sed 's/[()]//g' file
然后解压缩循环中的名称以在条件中使用:
def load_images_from_folder(folder):
images = []
for filename in os.listdir(folder):
# if any([filename.endswith(x) for x in ['1500_R_1','.jpg','.jpeg']]):
img = cv2.imread(os.path.join(folder,filename))
#cv2.imshow('Color image',img)
if img is not None:
images.append((filename,img))
return images
,
基本思想是从3个文件夹中获取图像,并根据其名称将其分离,然后将其放入新文件夹中。任何人都可以给我一个想法如何做到这一点。另外,我试图从用户那里获取所有文件夹的输入,然后读取图像。您还能为此建议些什么吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。