انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: سید وحید رضا برهانی در 10 مهر 1396، 05:22 ب‌ظ

عنوان: تشخیص رنگ با پایتون
ارسال شده توسط: سید وحید رضا برهانی در 10 مهر 1396، 05:22 ب‌ظ
سلام
من می خوام که یک عکسی رو به پایتون بدم (یک عکس کوچیک ) بعد پایتون بگه که این احتمالا (احتمال مهم هست یعنی یک رنجی زو به هر رنگ نسبت بده) چه رنگی هست؟
روش هایی که توی اینترنت دیدم برعکس عمل می کردند یعنی که رنگ رو باید خودم مشخص کنم بعد پایتون بگه که آیا تصویر این رنگی هست یا نه که این بدردم نمی خوره
مثلا اینجا: https://henrydangprg.com/2016/06/26/color-detection-in-python-with-opencv/
و تا حدامکان سریع هم باشه.البته فعلا روی سرعتش تمرکز ندارم.
عنوان: پاسخ : تشخیص رنگ با پایتون
ارسال شده توسط: nixoeen در 10 مهر 1396، 08:01 ب‌ظ
سوالت واضح نیست.
عنوان: پاسخ : تشخیص رنگ با پایتون
ارسال شده توسط: Geek در 10 مهر 1396، 10:12 ب‌ظ
فکر کنم این کمک کنه:
https://stackoverflow.com/questions/2270874/image-color-detection-using-python
عنوان: پاسخ : تشخیص رنگ با پایتون
ارسال شده توسط: سید وحید رضا برهانی در 11 مهر 1396، 02:21 ق‌ظ
فکر کنم این کمک کنه:
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)


البته بازم اگر کسی چیز بهتری داشت بگه.