alan-turing-institute / distinctipy

A lightweight package for generating visually distinct colours.
https://distinctipy.readthedocs.io/en/latest/
MIT License
237 stars 13 forks source link

[Feature request] Add class `Color` #24

Open Erol444 opened 2 years ago

Erol444 commented 2 years ago

I would add a main class Color (naming TBD), and the whole library would work with it.

eg. distinct_color() returns Color. color_distance() takes 2x Color as argument. The why is that we don't need to create our own helper classes for normalization/color order conversion.

distinctipy.distinct_color().bgr().normalize(256).tuple() # Returns tuple of ints, 0..255, BGR order
# Same as:
distinctipy.distinct_color().cv2() # New proposed method

color = distinctipy.distinct_color()
cv2.putText(image, 'Text', (20,20), font, 1, color.cv2(), thickness, cv2.LINE_AA)
cv2.putText(image, 'Text', (20,40), font, 1, color.get_text_color().cv2(), thickness, cv2.LINE_AA)

Let me know your thoughts, as I (or one of our team members) would like to start working on this. Thanks, Erik

jack89roberts commented 2 years ago

Hi @Erol444 , thanks for using distinctipy! I think I'd be happy for this to be added to distinctipy because I can see some of the benefits, but note that:

But PRs certainly welcome 🙂

Erol444 commented 2 years ago

Draft PR here: https://github.com/alan-turing-institute/distinctipy/pull/25

Head up: for our project (depthai-sdk) we might fork this to remove dependencies to panda/matplotlib and create a separate library, as we don't require such features (only create unique colors).

jack89roberts commented 2 years ago

Draft PR here: #25

Great, I'll take a look when I have some time (hopefully later this week)

Head up: for our project (depthai-sdk) we might fork this to remove dependencies to panda/matplotlib and create a separate library, as we don't require such features (only create unique colors).

@Erol444 The latest versions of distinctipy only have numpy as a core dependency actually, the pandas/matplotlib/etc. dependencies are optional extras now, which you should only get if you do pip install 'distinctipy[optional]' or pip install 'distinctipy[all]'. If you're still getting them from pip install distinctipy that's a bug.

Erol444 commented 2 years ago

I have now noticed I was on the old branch (develop) and that main has had a few updates. Now I see that matplotlib/pandas aren't dependencies anymore, which is perfect! Here's the PR, you can link it to this feature request (github issue): https://github.com/alan-turing-institute/distinctipy/pull/26