python - 如何使用opencv和python更快地遍历大型图像数据集?

标签 python numpy opencv

我有一个包含100000张图像的随机数据集。

我在同一数据集上使用了以下代码,但处理速度非常慢(在AWS GPU实例中)。

import cv2
from progressbar import ProgressBar
pbar = ProgressBar()
def image_to_feature_vector(image, size=(128, 128)):
    return cv2.resize(image, size).flatten()
imagePath = #path to dataset
data = []
#load images
for i in pbar(range(0,len(imagePath))):
   image = cv2.imread(imagePath[i])
   image=cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
   features = image_to_feature_vector(image)
   data.append(features)

如何提高处理速度?

最佳答案

真正的解决方案取决于瓶颈分析。

无论如何,图像读取(加载)时间是您可以使用的宝贵资源。

您的过程是顺序的:

enter image description here

在这种情况下,我使用称为IO管道或并行管道的东西。这个想法是使用一个线程来串行加载图像并将它们提供给多个处理线程。因此,在读取输入线程时,一个或多个线程正在使用CPU处理先前的图像。也可以使用一个线程来连续写出数据:

enter image description here

不幸的是,我没有使用python来写一些东西作为示例。该模式已经在python线程框架中实现。

我使用这种方法来抓取相机帧并进行高速处理,但是我使用了C++。如果您对使用C++编程无关紧要,则可以在impressive answer中找到启发性的东西。

关于python - 如何使用opencv和python更快地遍历大型图像数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47555670/

相关文章:

opencv - 构建OpenCV 2.2 HTML文档

c++ - OpenCV 与 cv::FAST 有问题

python - Matplotlib : What is the function of cmap in imshow?

python - 剪切数组的行和列

python - MultiIndexing 行与 pandas DataFrame 中的列

python - 我如何通过 python 将雪花与 Oauth 连接?

python - 每个时期具有数据增强功能的 tf.Data 输入管道如何工作?

python - python中的高效外积

Python - 获取嵌套 JSON 中的列表

python - 如何访问模板缓存? - Django