python 矢量法读取文件夹中所有图片,避免for循环,多线程提高效率
时间: 2023-07-25 09:07:38 浏览: 97
Python 读取指定文件夹下的所有图像方法
5星 · 资源好评率100%
可以使用Python的multiprocessing库来实现多线程读取文件夹中所有图片。
首先,需要导入必要的库:
```python
import os
import glob
import cv2
import numpy as np
import concurrent.futures
```
接下来,定义一个函数来读取图片并进行预处理:
```python
def process_image(file):
img = cv2.imread(file)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = cv2.resize(img, (224, 224))
img = img.astype(np.float32) / 255.0
return img
```
该函数将会读取一个图片文件,将其转换为RGB模式,调整大小为(224, 224),并将像素值归一化到[0, 1]范围内。
接下来,使用multiprocessing库的ThreadPoolExecutor类来创建一个线程池,提交任务并获取结果:
```python
folder = "/path/to/folder"
# 获取文件夹中所有图片文件路径
files = glob.glob(os.path.join(folder, "*.jpg"))
# 创建线程池
with concurrent.futures.ThreadPoolExecutor() as executor:
# 提交任务并获取结果
images = list(executor.map(process_image, files))
```
这里使用glob库获取指定文件夹中所有后缀为".jpg"的图片文件路径,并将其传递给ThreadPoolExecutor的map方法。map方法会将process_image函数应用于files中的每个文件,并返回结果列表。最后将结果列表转换为numpy数组即可。
这种方式可以避免使用for循环,提高读取文件夹中所有图片的效率。
阅读全文