Skip to main content

Detects colors in images 10 x faster than Numpy

Project description

Detects colors in images 10 x faster than Numpy

pip install locate-pixelcolor-c

Tested against Windows 10 / Python 3.10 / Anaconda

How to use it in Python

import numpy as np
import cv2
from locate_pixelcolor_c import search_colors
# 4525 x 6623 x 3 picture https://www.pexels.com/pt-br/foto/foto-da-raposa-sentada-no-chao-2295744/
picx = r"C:\Users\hansc\Downloads\pexels-alex-andrews-2295744.jpg"
pic = cv2.imread(picx)
colors0 = np.array([[255, 255, 255]],dtype=np.uint8)
resus0 = search_colors(pic=pic, colors=colors0)
colors1=np.array([(66,  71,  69),(62,  67,  65),(144, 155, 153),(52,  57,  55),(127, 138, 136),(53,  58,  56),(51,  56,  54),(32,  27,  18),(24,  17,   8),],dtype=np.uint8)
resus1 =  search_colors(pic=pic, colors=colors1)
####################################################################
%timeit search_colors(pic=pic, colors=colors0)
17.6 ms ± 245 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
# last update: 16.3 ms

b,g,r = pic[...,0],pic[...,1],pic[...,2]
%timeit np.where(((b==255)&(g==255)&(r==255)))
150 ms ± 209 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
####################################################################
%timeit resus1 =  search_colors(pic=pic, colors=colors1)
138 ms ± 10 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
# last update: 117 ms


%timeit np.where(((b==66)&(g==71)&(r==69))|((b==62)&(g==67)&(r==65))|((b==144)&(g==155)&(r==153))|((b==52)&(g==57)&(r==55))|((b==127)&(g==138)&(r==136))|((b==53)&(g==58)&(r==56))|((b==51)&(g==56)&(r==54))|((b==32)&(g==27)&(r==18))|((b==24)&(g==17)&(r==8)))
1 s ± 16.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
####################################################################

The C Code

void colorsearch(unsigned char *pic, unsigned char *colors, int width, int totallengthpic, int totallengthcolor, int *outputx, int *outputy, int *lastresult)
{
    int counter = 0;

    for (int i = 0; i <= totallengthcolor; i += 3)
    {
        int r = colors[i];
        int g = colors[i + 1];
        int b = colors[i + 2];
        for (int j = 0; j <= totallengthpic; j += 3)
        {
            if ((r == pic[j]) && (g == pic[j + 1]) && (b == pic[j + 2]))
            {

                int dividend = j / 3;
                int quotient = dividend / width;
                int remainder = dividend % width;
                int upcounter = counter;
                outputx[upcounter] = quotient;
                outputy[upcounter] = remainder;
                lastresult[0] = upcounter;
                counter++;
            }
        }
    }
}
// gcc -O2 -fPIC -shared -o cloop.so cloop.c

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

locate_pixelcolor_c-0.12.tar.gz (35.0 kB view details)

Uploaded Source

Built Distribution

locate_pixelcolor_c-0.12-py3-none-any.whl (36.2 kB view details)

Uploaded Python 3

File details

Details for the file locate_pixelcolor_c-0.12.tar.gz.

File metadata

  • Download URL: locate_pixelcolor_c-0.12.tar.gz
  • Upload date:
  • Size: 35.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for locate_pixelcolor_c-0.12.tar.gz
Algorithm Hash digest
SHA256 4637a0e63bd6aa650d4144b85080527641a9d410b3730d1c85ffb3bbb9bd2ee9
MD5 b297238aaa61895ba0db0cf9aef3541e
BLAKE2b-256 cb6fedd1f7396a1101bc20411dd7b06d5ff207779de3690cce03836d818d50ab

See more details on using hashes here.

File details

Details for the file locate_pixelcolor_c-0.12-py3-none-any.whl.

File metadata

File hashes

Hashes for locate_pixelcolor_c-0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 b2a69b3765be766bfd0b15e8673e23dfe6e65de0dbae31e608e45c92535645e0
MD5 45c17decdb8ab9103c28df82a2d8fa8b
BLAKE2b-256 83dbb9cec98546c32d86653b33bcb3b30cb9dedc54672cbf8d8c494fffb6e142

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page