ジョン・ポール :
私は(その後、細かい作品座標位置を使用して、特定の画素を読み取り、画像を読み取ることができましたpixel = img[801,600]
)。
私の次のステップは、各画素を反復し、ピクセルデータを使用して([801600]この例では)位置を見つけることを試みることです。
「IMG」を通して私の反復は、ピクセルを見つけることができません。私は任意のヘルプや指導をいただければ幸いです。
import cv2
import numpy as np
img = cv2.imread('one.jpg')
pixel = img[801,600]
print (pixel) # pixel value i am searching for
for i in img:
for x in i:
if x.sort == pixel.sort:
print ("SUCCESS")
DBAT:
内蔵のenumerate
反復機能がお手伝いします。それはあなたの場合には、ピクセルのインデックスを提供すること、反復インデックスを提供します:
import cv2
import numpy as np
img = cv2.imread('one.jpg')
pixel = img[801,600]
print (pixel) # pixel value i am searching for
def search_for():
for iidx, i in enumerate(img):
for xidx, x in enumerate(i):
if (x == pixel).all():
print (f"SUCCESS - [{iidx} {xidx}]")
if __name__ == "__main__":
print("Search using for loops...")
search_for()
ことで、ループはPythonで遅く、それが適切な大きさの画像上で実行するコードのための時間がかかるため、と述べました。代わりに、使用してnp.array
彼らはこのタイプのアプリケーション用に最適化されているような方法が好ましいです。
import cv2
import numpy as np
img = cv2.imread('one.jpg')
pixel = img[801,600]
print (pixel) # pixel value i am searching for
def search_array():
# create an image of just the pixel, having the same size of
pixel_tile = np.tile(pixel, (*img.shape[:2], 1))
# absolute difference of the two images
diff = np.sum(np.abs(img - pixel_tile), axis=2)
# print indices
print("\n".join([f"SUCCESS - {idx}" for idx in np.argwhere(diff == 0)]))
if __name__ == "__main__":
print("Search using numpy methods...")
search_array()