gpt4 book ai didi

python - 使用 opencv、numpy 和 python 搜索图像中的像素

转载 作者:行者123 更新时间:2023-12-02 02:17:24 26 4
gpt4 key购买 nike

我已经能够读取图像,然后使用工作正常的坐标位置读取特定像素(pixel = img[801,600])。

我的下一步是迭代每个像素并尝试使用像素数据找到位置(在本例中为 [801,600])。

我通过“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")

最佳答案

内置的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 中的 for 循环速度很慢,并且代码需要一段时间才能在适当大的图像上运行。相反,首选使用 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()

关于python - 使用 opencv、numpy 和 python 搜索图像中的像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60961328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com