Python文件I / O明显比OpenCV读取慢

时间:2019-06-18 16:33:36

标签: python opencv io

我有一个图像数据集,其中几个JPEG图像的字节流合并到一个二进制文件中。每个图像的字节偏移量和字节数是已知的,因此我使用以下代码片段进行读取:

import cv2
import numpy as np

def get_image(binary_file_path, byte_offset, buffer_size):
    with open(binary_file_path, 'rb') as ifile:
        ifile.seek(byte_offset)
        image_buffer = np.asarray(bytearray(ifile.read(buffer_size)), np.uint8)  # TOO SLOW
        return cv2.imdecode(image_buffer, cv2.IMREAD_COLOR)

在我的机器上,标有“ TOO SLOW”注释的行大约需要50毫秒才能执行。相反,如果我使用cv2.imread解析常规JPEG图像文件,则几乎不需要10毫秒。

值得注意的是:在上面的代码段中,读取字节花了50ms ,而cv2.imread能够在10ms内读取文件并解码JPEG格式。< / p>

我真的很想知道这种巨大差异背后的原因。

P.S。上面提到的时间是在多处理池中运行代码(如果相关)时获得的。

0 个答案:

没有答案