انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: سید وحید رضا برهانی در 10 مهر 1396، 05:22 بظ
-
سلام
من می خوام که یک عکسی رو به پایتون بدم (یک عکس کوچیک ) بعد پایتون بگه که این احتمالا (احتمال مهم هست یعنی یک رنجی زو به هر رنگ نسبت بده) چه رنگی هست؟
روش هایی که توی اینترنت دیدم برعکس عمل می کردند یعنی که رنگ رو باید خودم مشخص کنم بعد پایتون بگه که آیا تصویر این رنگی هست یا نه که این بدردم نمی خوره
مثلا اینجا: https://henrydangprg.com/2016/06/26/color-detection-in-python-with-opencv/
و تا حدامکان سریع هم باشه.البته فعلا روی سرعتش تمرکز ندارم.
-
سوالت واضح نیست.
-
فکر کنم این کمک کنه:
https://stackoverflow.com/questions/2270874/image-color-detection-using-python
-
فکر کنم این کمک کنه:
https://stackoverflow.com/questions/2270874/image-color-detection-using-python
آره تاحدی کمک کرد.
با pil و webcolors تقریبا به چیزی که می خواستم رسیدم
from PIL import Image
import webcolors
import sys
def closest_colour(requested_colour):
min_colours = {}
for key, name in webcolors.css3_hex_to_names.items():
r_c, g_c, b_c = webcolors.hex_to_rgb(key)
rd = (r_c - requested_colour[0]) ** 2
gd = (g_c - requested_colour[1]) ** 2
bd = (b_c - requested_colour[2]) ** 2
min_colours[(rd + gd + bd)] = name
return min_colours[min(min_colours.keys())]
def get_colour_name(requested_colour):
try:
closest_name = actual_name = webcolors.rgb_to_name(requested_colour)
except ValueError:
closest_name = closest_colour(requested_colour)
actual_name = None
return actual_name, closest_name
i = Image.open(sys.argv[1])
c=max( i.getcolors())[1]
actual_name, closest_name = get_colour_name(c)
print ("Actual colour name:", actual_name, ", closest colour name:", closest_name)
البته بازم اگر کسی چیز بهتری داشت بگه.