aak*_*aku 2 python opencv python-3.x anaconda
我正在使用 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()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
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
Run Code Online (Sandbox Code Playgroud)
一个简单的方法是安装 Glob。您可以在 anaconda 提示符下使用pip install glob
.
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))
Run Code Online (Sandbox Code Playgroud)
然后您可以通过索引它来访问图像,即
plt.imshow(read_images[0])
Run Code Online (Sandbox Code Playgroud)