Python imaging library 仅打开JPEG的左上角?

Python imaging library 仅打开JPEG的左上角?,python-imaging-library,jpeg,Python Imaging Library,Jpeg,我想知道是否有一个软件库可以打开jpeg并将其子集转换为未压缩的数组(如Pillow)。这将与更常见的方法形成对比,即打开文件,将其完全转换为位数组,然后获取位数组的子集 在我的例子中,我想到的子集是左上角。文件解压缩到2544×4200像素,但我只对左上角的150×900像素感兴趣 背景如下: 我希望JPEG格式是一系列压缩的子面板,当算法处理了足够多的子面板以满足所需的图像子集时,它可能会停止 我已经搜索了一段时间,但没有发现任何关于这种算法的提及,无可否认,这是一个特例 背景 我使用pyz

我想知道是否有一个软件库可以打开jpeg并将其子集转换为未压缩的数组(如Pillow)。这将与更常见的方法形成对比,即打开文件,将其完全转换为位数组,然后获取位数组的子集

在我的例子中,我想到的子集是左上角。文件解压缩到2544×4200像素,但我只对左上角的150×900像素感兴趣

背景如下:

我希望JPEG格式是一系列压缩的子面板,当算法处理了足够多的子面板以满足所需的图像子集时,它可能会停止

我已经搜索了一段时间,但没有发现任何关于这种算法的提及,无可否认,这是一个特例

背景

我使用pyzbar从高速扫描仪生成的JPEG图像的左上角捕获条形码。通常,每个图像需要大约250毫秒。实际Pyzbar时间约为2.5毫秒,而其余99%的时间用于从文件中读取图像、使用Pizz解压、提取左上角


我作为一名志愿者从事这项工作的非营利组织真的负担不起更换2.5万美元的扫描仪,而这台旧车的频道是整个瓶颈。告诉扫描仪发送未压缩的图像将使整个过程至少减慢90%

我不知道有哪个库可以做到这一点,但可以修改IJG c库中的
jpegtran.c
jdtrans.c
,以便在裁剪时只读取所需的MCU行,在您的具体情况下,解码时间应减少约75%(900/4200行)

由于您使用的是Python,因此可以通过以下方式获得经过适当裁剪的jpeg:

os.popen(“jpegtran-crop 152x904%s”%inputfile.read()


这假设输入的jpeg不是渐进式的。

枕头有什么问题?jpeg数据存储为8x8块。如果你能找到相当于jpegtran-crop的
jpegtran-crop
,你也许可以扔掉足够多的东西,不需要解码数据就可以得到你的ROI。非常有趣的问题。@mkrieger1在枕头中裁剪图像之前,必须先对其进行解压缩。在这个过程中,解压占所用时间的99%。
vip
可以做到这一点-请参阅John的精彩答案,谢谢。这超出了我目前的能力范围。如果我决定学习C语言编程,我可能会回到这一点上,我上一次是在80年代中期。我会把它存档,以防万一。