У меня есть список изображений .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 слева.
@ShipraSarkar я упомянул ожидаемый образец вывода
Для вашего требования вы можете использовать список в 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)
Вывод :
Привет @Sasi, можете ли вы уточнить свое требование, предоставив образец вывода?