学習するpython 3.Xを趣味として。私はそれが画面上の特定の色を検出するために、リアルタイムで実行したいPythonはforループから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
:私はシンプルpixelsearchを書きました。しかし、それは少し遅いです。 iteretools.productをnumpyに置き換えようとしました。
for y in np.arange(200,500,1):
for x in np.arange(300,1100,1):
r,g,b =im[x1,y1]
ただし、「タイプエラー:整数が必要です」というエラーが表示されます。 私は何が間違っていますか?パフォーマンスを向上させるためにnumpyに変換する正しい方法です
最初に、 'x1'と' y1'はループ変数の名前を 'x'と' y'に変更したので、2番目の部分では定義されていません。 2番目にはまだループがあります。パフォーマンスを向上させるには、これらを取り除き、ベクトル化された操作に置き換える必要があります。そうしないと、パフォーマンスが向上しません。しかし、あなたを助けるためには、「何をするか」が何であるかを知る必要があります。 – jotasi