Locate RGB values in a picture! 40 x faster than PIL, 5 x faster than numpy
pip install locate-pixelcolor
from locate_pixelcolor import search_colors
# Let's use a 4525 x 6623 x 3 picture https://www.pexels.com/pt-br/foto/foto-da-raposa-sentada-no-chao-2295744/
import cv2
path = r"C:\Users\Gamer\Documents\Downloads\pexels-alex-andrews-2295744.jpg"
img = cv2.imread(path)
exa1 = search_colors(pic=img, colors=[(255, 255, 255)])
%timeit search_colors(pic=img, colors=[(255, 255, 255)])
96.8 ms ± 534 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
# You can search for up to 9 different colors at the same time:
search_colors(pic=img, colors=[(255, 255, 255), (0, 0, 0)])
%timeit search_colors(pic=img, colors=[(255, 255, 255),(0, 0, 0)])
132 ms ± 382 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
# Let's compare it with PIL
from PIL import Image
img = Image.open(path)
img = img.convert("RGB")
datas = img.getdata()
def get_coords_with_pil(col):
newData = []
for item in datas:
if item[0] == col[0] and item[1] == col[1] and item[2] == col[2]:
newData.append(item)
return newData
# %timeit get_coords_with_pil(col=(255, 255, 255))
# 3.34 s ± 51.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)