Нахождение значений RGB

Я хочу написать функцию, которая печатает значения цвета, RGB, изображения. Фотографии либо окрашены в красный, зеленый, желтый или белый цвет.

У меня есть следующее:

def findColor():
    pic=takePicture()
    red = 0   
    green = 0
    blue = 0 
    size = getWidth(pic)*getHeight(pic)
    for pix in getPixels(pic):
        r = getRed(pix)
        g = getGreen(pix)
        b = getBlue(pix)
        red = red + r
        green = green + g
        blue = blue + b 
    print(red//size,green//size,blue//size)

Или код, который дает мне значения, аналогичные приведенным выше:

def findColor():
    pic=takePicture()
    for pix in getPixels(pic):
        r = getRed(pix)
        g = getGreen(pix)
        b = getBlue(pix)
    print(r,g,b)   

Являются ли эти коды правильным способом получения значений RGB? Я считаю, что второй код не является точным, если изображение содержало разные цвета.

2 ответа

Решение

Если вы просто хотите напечатать значение rgb для каждого отдельного пикселя, ваш второй кодовый блок будет работать, если вы исправите отступ.

def findColor():
    pic=takePicture()
    for pix in getPixels(pic):
        r = getRed(pix)
        g = getGreen(pix)
        b = getBlue(pix)
        print(r,g,b) 

Многие опаздывают на оригинальный пост.

В случае, если рис ndarray с формой, как (R,C,3) R-> Rows/Height, C -> Columns/Width и 3 канала (RGB)

Эта статья Python NumPy массив с несколькими условиями для перебора по изображению является one line solution вы можете искать

Red,Green,Blue = img[...,0],img[...,1],img[...,2]

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