Как получить самый высокий доминирующий цвет из API облачного видения Google в python?

У меня есть список изображений .jpg, и я пытаюсь извлечь доминирующий цвет из API облачного видения Google - https://cloud.google.com/vision/docs/drag-and-drop

Приведенная ниже часть функции иногда извлекает правильные значения RGB, но иногда также извлекает неправильные значения RGB. Что я должен изменить в приведенном ниже коде, чтобы он всегда выбирал доминирующий цвет с самым высоким процентом RGB. то есть первое значение RGB слева.

def dominat_color(image):
    response = client.image_properties(image=image)
    props = response.image_properties_annotation

    max_frac=0.0
    #print('Properties:', props.dominant_colors.colors[0].red,",",props.dominant_colors.colors[0].green,",",props.dominant_colors.colors[0].blue,",",dominant_colors.colors[0].pixel_fraction)

    for color in props.dominant_colors.colors:

        var1=float(color.pixel_fraction)*100
    #var1=float(color.percent)

        if (var1 > max_frac):
            max_frac=var1
            var2=int(color.color.red)
            var3=int(color.color.green)
            var4=int(color.color.blue)
            #print("\nRGB: ", var2,",",var3,",",var4,",", (var1))


    if response.error.message:
        raise Exception(
            '{}\nFor more info on error messages, check: '
            'https://cloud.google.com/apis/design/errors'.format(
                response.error.message))
    return var2,var3,var4

creds = service_account.Credentials.from_service_account_file(r'xxxx.json') #credentials
client = vision.ImageAnnotatorClient(credentials=creds,)
Sample Output:

Image_name   Red   Green  Blue

k1.jpg       240   125     16

Значения красного, зеленого и синего должны быть самыми левыми значениями RGB. в gcp --> https://cloud.google.com/vision/docs/drag-and-drop на вкладке свойств я просто пытаюсь извлечь первые значения RGB слева.

Привет @Sasi, можете ли вы уточнить свое требование, предоставив образец вывода?

Shipra Sarkar 18.11.2022 15:26

@ShipraSarkar я упомянул ожидаемый образец вывода

Sasi 21.11.2022 11:35
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для вашего требования вы можете использовать список в python для хранения значений и поиска доминирующего значения слева. Вы можете проверить приведенный ниже пример кода, который вы можете использовать для своего варианта использования.

Код :

def dominat_color(image):
    from google.cloud import vision
    import io
    client = vision.ImageAnnotatorClient()

    image_uri = image
    image = vision.Image() # Py2+3 if hasattr(vision, 'Image') else vision.types.Image()
    image.source.image_uri = image_uri

    response = client.image_properties(image=image)
    props = response.image_properties_annotation
    
    
    #print('Properties:', props.dominant_colors.colors[0].red,",",props.dominant_colors.colors[0].green,",",props.dominant_colors.colors[0].blue,",",dominant_colors.colors[0].pixel_fraction)
    max_frac=0.0
    lst = []
    for color in props.dominant_colors.colors:

        var1=float(color.pixel_fraction)*100
        if (var1 > max_frac):
            max_frac = var1
                
            var2=int(color.color.red)
            lst.append(var2)
            var3=int(color.color.green)
            lst.append(var3)
            var4=int(color.color.blue)
            lst.append(var4)

    rmax = max(lst)
    index = lst.index(rmax)
    print(lst[index],lst[index+1],lst[index+2])
    
    
    if response.error.message:
        raise Exception(
            '{}\nFor more info on error messages, check: '
            'https://cloud.google.com/apis/design/errors'.format(
                response.error.message))
        
dominat_color(image_path)

Вывод :

Другие вопросы по теме