# RGB search with numba - 2-3 x faster than numpy
### pip install locate-pixelcolor-numba
### Important!
This is a compiled .pyd file (Numba AOT), if you can't import it, run the following code to generate a new pyd file, and replace it with the old .pyd file.
```python
from numba_aot_compiler import compnumba #pip install numba-aot-compiler
import numpy as np
from numba import uint8, uint16
def search_colors(r, g, b, rgbs, divider):
res = np.zeros(b.shape, dtype=np.uint16)
res2 = np.zeros(b.shape, dtype=np.uint16)
zaehler = 0
for rgb in rgbs:
rr, gg, bb = rgb
for i in range(r.shape[0]):
if r[i] == rr:
if g[i] == gg:
if b[i] == bb:
dvquot, dvrem = divmod(i, divider)
res[zaehler] = dvquot
res2[zaehler] = dvrem
zaehler = zaehler + 1
results = np.dstack((res[:zaehler], res2[:zaehler]))
return results
compi2 = compnumba(
fu=search_colors,
funcname="search_colors",
file="searchcolorsnumba",
folder="locate_pixelcolor_numba",
signature=(uint8[:], uint8[:], uint8[:], uint8[:, :], uint16),
parallel=True,
fastmath=True,
nogil=True,
)
```
### How to use it
```python
from locate_pixelcolor_numba import search_colors
import cv2
import time
import numpy as np
pic = cv2.imread(r"pexels-alex-andrews-2295744.jpg") # https://www.pexels.com/pt-br/foto/foto-da-raposa-sentada-no-chao-2295744/
colors = 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)
search_colors(pic,colors)
Out[2]:
array([[[ 0, 4522],
[ 3, 4522],
[ 3, 4523],
...,
[6622, 4522],
[6622, 4523],
[6622, 4524]]], dtype=uint16)
%timeit search_colors(pic,colors)
413 ms ± 1.22 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
# More benchmarks: https://github.com/hansalemaos/locate_pixelcolor_cpp
```
Raw data
{
"_id": null,
"home_page": "https://github.com/hansalemaos/locate_pixelcolor_numba",
"name": "locate-pixelcolor-numba",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "numba,aot,compiled,rgb,search",
"author": "Johannes Fischer",
"author_email": "aulasparticularesdealemaosp@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/00/59/e1dfb51c225699388d671a4eac77cbe6f633a2dd5ac5e5e6d6f1a8789d60/locate_pixelcolor_numba-0.11.tar.gz",
"platform": null,
"description": "# RGB search with numba - 2-3 x faster than numpy \r\n\r\n### pip install locate-pixelcolor-numba\r\n\r\n\r\n### Important!\r\nThis is a compiled .pyd file (Numba AOT), if you can't import it, run the following code to generate a new pyd file, and replace it with the old .pyd file.\r\n\r\n\r\n```python\r\nfrom numba_aot_compiler import compnumba #pip install numba-aot-compiler\r\nimport numpy as np\r\nfrom numba import uint8, uint16\r\n\r\n\r\ndef search_colors(r, g, b, rgbs, divider):\r\n res = np.zeros(b.shape, dtype=np.uint16)\r\n res2 = np.zeros(b.shape, dtype=np.uint16)\r\n zaehler = 0\r\n for rgb in rgbs:\r\n rr, gg, bb = rgb\r\n for i in range(r.shape[0]):\r\n if r[i] == rr:\r\n if g[i] == gg:\r\n if b[i] == bb:\r\n dvquot, dvrem = divmod(i, divider)\r\n res[zaehler] = dvquot\r\n res2[zaehler] = dvrem\r\n zaehler = zaehler + 1\r\n results = np.dstack((res[:zaehler], res2[:zaehler]))\r\n return results\r\n\r\n\r\ncompi2 = compnumba(\r\n fu=search_colors,\r\n funcname=\"search_colors\",\r\n file=\"searchcolorsnumba\",\r\n folder=\"locate_pixelcolor_numba\",\r\n signature=(uint8[:], uint8[:], uint8[:], uint8[:, :], uint16),\r\n parallel=True,\r\n fastmath=True,\r\n nogil=True,\r\n)\r\n```\r\n\r\n### How to use it\r\n\r\n```python\r\nfrom locate_pixelcolor_numba import search_colors\r\nimport cv2\r\nimport time\r\nimport numpy as np\r\npic = cv2.imread(r\"pexels-alex-andrews-2295744.jpg\") # https://www.pexels.com/pt-br/foto/foto-da-raposa-sentada-no-chao-2295744/\r\ncolors = 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)\r\nsearch_colors(pic,colors)\r\nOut[2]: \r\narray([[[ 0, 4522],\r\n [ 3, 4522],\r\n [ 3, 4523],\r\n ...,\r\n [6622, 4522],\r\n [6622, 4523],\r\n [6622, 4524]]], dtype=uint16)\r\n%timeit search_colors(pic,colors)\r\n413 ms \u00c2\u00b1 1.22 ms per loop (mean \u00c2\u00b1 std. dev. of 7 runs, 1 loop each)\r\n\r\n# More benchmarks: https://github.com/hansalemaos/locate_pixelcolor_cpp\r\n\r\n```\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "RGB search with numba - 2-3 x faster than numpy",
"version": "0.11",
"split_keywords": [
"numba",
"aot",
"compiled",
"rgb",
"search"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d68b3ea90f7cded847ae5c284e649c6990f5520242c7b281856ab418843007d2",
"md5": "b20328de20e10428f40736c3b9bfae81",
"sha256": "c8943a7425073654ad77d459da76d09bed5cfbea2c9b9c29c3f2abf005091a5d"
},
"downloads": -1,
"filename": "locate_pixelcolor_numba-0.11-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b20328de20e10428f40736c3b9bfae81",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 23699,
"upload_time": "2023-04-15T00:40:51",
"upload_time_iso_8601": "2023-04-15T00:40:51.108885Z",
"url": "https://files.pythonhosted.org/packages/d6/8b/3ea90f7cded847ae5c284e649c6990f5520242c7b281856ab418843007d2/locate_pixelcolor_numba-0.11-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0059e1dfb51c225699388d671a4eac77cbe6f633a2dd5ac5e5e6d6f1a8789d60",
"md5": "c32ba8c68d6d919885dd4161876bb5ee",
"sha256": "a67a601cc616ad6c82aba1e4f6f543f9c68a5e88ffdaf7b7d0c1377cac9af12b"
},
"downloads": -1,
"filename": "locate_pixelcolor_numba-0.11.tar.gz",
"has_sig": false,
"md5_digest": "c32ba8c68d6d919885dd4161876bb5ee",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 23625,
"upload_time": "2023-04-15T00:40:53",
"upload_time_iso_8601": "2023-04-15T00:40:53.271785Z",
"url": "https://files.pythonhosted.org/packages/00/59/e1dfb51c225699388d671a4eac77cbe6f633a2dd5ac5e5e6d6f1a8789d60/locate_pixelcolor_numba-0.11.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-04-15 00:40:53",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "hansalemaos",
"github_project": "locate_pixelcolor_numba",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "locate-pixelcolor-numba"
}