我正在使用 anaconda 在 python 3.6 中编写图像识别程序。我将图像数据集存储在位置 E:\food-101\images 中,其中“图像”文件夹包含多个子文件夹包含照片。我想使用这些图像来训练我的机器学习模型。我能够加载(读取)存储在 E:\中的单个图像我想从上述路径加载多个图像我该如何继续?我正在使用 opencv。我的代码如下任何帮助表示赞赏
import cv2
import matplotlib
import numpy
img = cv2.imread("E:\food\images\chicken_wings\a.jpg",cv2.IMREAD_GRAYSCALE)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
出现以下错误
Traceback (most recent call last):
File "<ipython-input-8-6310b5f3028e>", line 5, in <module>
cv2.imshow('image',img)
error: OpenCV(3.4.1) C:\bld\opencv_1520732670222\work\opencv-3.4.1\modules\highgui\src\window.cpp:356: error: (-215) size.width>0 && size.height>0 in function cv::imshow
Traceback (most recent call last):
File "<ipython-input-8-6310b5f3028e>", line 5, in <module>
cv2.imshow('image',img)
error: OpenCV(3.4.1) C:\bld\opencv_1520732670222\work\opencv-3.4.1\modules\highgui\src\window.cpp:356: error: (-215) size.width>0 && size.height>0 in function cv::imshow
最佳答案
一个简单的方法是安装 Glob。您可以使用 pip install glob
在 anaconda 提示符下执行此操作。
Glob 允许您像在终端中一样查询文件。一旦你有了 Glob,你就可以将所有文件名保存到一个列表中,然后循环遍历这个列表,将你的图像(NumPy 数组)读取到一个新列表中。
import cv2
import numpy
import glob
folders = glob.glob('path\\to\\folder\\containing\\folders\\*')
imagenames_list = []
for folder in folders:
for f in glob.glob(folder+'/*.jpg'):
imagenames_list.append(f)
read_images = []
for image in imagenames_list:
read_images.append(cv2.imread(image, cv2.IMREAD_GRAYSCALE))
然后您可以通过索引来访问图像,即
plt.imshow(read_images[0])
关于python - 如何从python中的多个文件夹中读取多个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49537604/