如何使用python和Opencv从不同文件夹读取多个图像
我试图从3个不同的文件夹中读取多个图像。每个文件夹包含100个图像。我尝试了两种不同的代码,但我不知道为什么这些代码不起作用。有人能帮忙吗?谢谢 例如: 裁剪矩阵:Matrix1.png,Matrix2.png 裁剪标记:Mark1.png,Mark2.png 裁剪的标记1:Mark1Q1.png、Mark1Q2.png 输出:Matrix1.png+Mark1.png+Mark1Q1.png 代码1:如何使用python和Opencv从不同文件夹读取多个图像,python,opencv,image-processing,Python,Opencv,Image Processing,我试图从3个不同的文件夹中读取多个图像。每个文件夹包含100个图像。我尝试了两种不同的代码,但我不知道为什么这些代码不起作用。有人能帮忙吗?谢谢 例如: 裁剪矩阵:Matrix1.png,Matrix2.png 裁剪标记:Mark1.png,Mark2.png 裁剪的标记1:Mark1Q1.png、Mark1Q2.png 输出:Matrix1.png+Mark1.png+Mark1Q1.png 代码1: #1st path1 = os.path.abspath("C:/Users/TS
#1st
path1 = os.path.abspath("C:/Users/TSL/Desktop/Crop/Cropped Matrix/*.png")
path2 = os.path.abspath("C:/Users/TSL/Desktop/Crop/Cropped Marks/*.png")
path3 = os.path.abspath("C:/Users/TSL/Desktop/Crop/Cropped Marks1/*.png")
folder= os.path.join(path1, path2, path3)
def load(folder):
images = []
for filename in os.listdir(folder):
if filename.endswith(".png"):
img = cv2.imread(os.path.join(folder, filename))
if img is not None:
images.append(img)
return images
root = 'C:/Users/TSL/Desktop/Crop'
folders = [os.path.join(root, x) for x in ('Cropped Matrix', 'Cropped Marks', 'Cropped Marks1')]
all = [img for folder in folders for img in load(folder)]
cv2.imshow("Join img", all)
cv2.waitKey(0)
代码2
#2nd
path1 = os.path.abspath('Cropped Matrix')
path2 = os.path.abspath('Cropped Marks')
path3 = os.path.abspath('Cropped Marks1')
folder= os.path.join(path1, path2, path3)
def load(folder):
images = []
for filename in os.listdir(folder):
if any([filename.endswith(x) for x in [".png"]]):
img = cv2.imread(os.path.join(folder, filename))
if img is not None:
images.append(img)
return images
folders = ['Cropped Matrix', 'Cropped Marks',]
for folder in folders:
images = load(folder)
read = cv2.imread(images)
cv2.imshow("Join images", read)
cv2.waitKey(0)
all
是一个图像列表,您可以尝试使用imshow
来显示它。要逐个显示所有图像,您可以循环浏览all
,并使用imshow
显示每个图像
另外,正如@gold_cy正确指出的那样,all
是一个内置的python函数,因此应该避免将其用作变量名。将其更改为类似于all_images
all_images=[img for folders in folders for img in load(folder)]
对于所有图片中的i:
cv2.imshow(“图像”,i)#或您想要的任何方式
cv2.等待键(10)或任何合适的号码
将all
重命名为其他名称,您正在覆盖内置函数all
@gold\cy非常好的一点答案是工作感谢您的帮助@Sid和gold\cy