【发布时间】:2019-11-27 07:04:30
【问题描述】:
我需要在不到 1 秒的时间内对图像执行一项功能。我有一个 1000x1000 图像的问题,只是将其作为矩阵加载到程序中,需要 1 秒。
我用来加载它的函数如下:
import png
def load(fname):
with open(fname, mode='rb') as f:
reader = png.Reader(file=f)
w, h, png_img, _ = reader.asRGB8()
img = []
for line in png_img:
l = []
for i in range(0, len(line), 3):
l+=[(line[i], line[i+1], line[i+2])]
img+=[l]
return img
我怎样才能修改它,使打开图像时花费的时间超过几毫秒?
重要提示:我无法导入除此之外的其他功能(这是大学练习,因此有规则-.-)。所以我必须自己买一个
【问题讨论】:
-
Reader中是否有除asRGB8之外的函数可以调用,可能会更快? -
我不知道这个。但是,我仔细检查了代码,问题出在 for 循环
-
这不仅仅是一个 for 循环,它是两个嵌套的。这是一个 O(n^2) 问题,总是很慢。
-
问题规定了几毫秒的要求,但没有明确说明。我认为他们不知道毫秒是什么。这实际上是一个非常具体的要求,但似乎是随便使用的。因此问题很不清楚
标签: python python-3.x