学习python 3.X作为一种爱好。我写了一个简单的像素搜索:Python嵌套for-loop到numpy
im = Image.open("photo.jpg").convert('RGB').Load
for x1, y1 in product(range(300, 1100, 1), range(200, 500, 1)):
r,g,b =im[x1,y1]
rx,gx,bx = 200, 20, 20
if abs(rx - r)<=5 and abs(gx - g)<=5 and abs(bx - b)<=5:
do stuff
break
我希望它能够实时检测屏幕上的特定颜色。但它有点慢。 我试图用numpy替换iteretools.product。
for y in np.arange(200,500,1):
for x in np.arange(300,1100,1):
r,g,b =im[x1,y1]
但它给出了一个错误:“Typeerror:一个整数是必需的。” 我在做什么错?并且是我的方法转换为numpy以改善性能的正确方法?
首先,当您将循环变量重命名为'x'和'y'时,'x1'和'y1'没有在第二部分中定义。其次,你仍然有循环。为了提高性能,你应该摆脱这些,并用矢量化操作替换它们。否则,性能不会变好。然而,为了帮助你,你需要知道“做什么”是什么。 – jotasi