Я хотел бы знать, как рассчитать процентное соотношение цвета в изображении - PullRequest
0 голосов
/ 08 декабря 2018

Я хотел бы знать, как рассчитать процентное содержание цвета в изображении, изображение ниже представляет 100%: 100% уже это, когда уровень снижается: decreases Я хотел бы правильно узнать, как я могу получитьв процентах, которые есть у бара в данный момент, я пытался использовать библиотеку Matplotlib, но не смог получить ожидаемый результат, кто-нибудь может мне помочь, пожалуйста?Мне не нужно что-то готовое, кто-то меня научит ...

Ответы [ 3 ]

0 голосов
/ 08 декабря 2018

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

, вы можете сравнивать изображения, чтобы получить дов каком столбце они похожи, а затем можно вычислить выполненную задачу%, позвольте мне продемонстрировать ..

!wget https://i.stack.imgur.com/jnxX3.png
a = plt.imread( './jnxX3.png')
plt.imshow( a )

image with 100% progress

Это должно загрузить изображение с 100% завершения в переменной a

c =a 
c = c[: , 0:c.shape[1] - 50]
aa = np.zeros( dtype= float , shape=( 11,50,  3 ))
c = np.append( c, aa , axis= 1 )
plt.imshow( c)
plt.imshow( c )

сделал образец неполного изображения, которое вы должны были предоставить with 47% progress

def status( complete_img , part_image): 
    """inputs must be numpy arrays """ 

    complete_img = complete_img[:, 1: ] # as the first pixel column doesn't belong to % completion 
    part_image = part_image[:, 1:]

    counter = 0
    while(counter < part_image.shape[1] and counter < complete_img.shape[1]):         
        if (complete_img[:, counter ] == part_image[:,counter]).all():
            counter += 1 
        else :
            break
    perc = 100*( float(counter) / complete_img.shape[1])
    return 
status( a ,c ) # this will return % columns similar in the two images
0 голосов
/ 08 декабря 2018

Предложение:

import numpy as np
from PIL import Image
from urllib.request import urlopen

full =  np.asarray(Image.open(urlopen("https://i.stack.imgur.com/jnxX3.png")))
probe =  np.asarray(Image.open(urlopen("https://i.stack.imgur.com/vx5zt.png")))

# crop the images to the same shape 
# (this step should be avoided, best compare equal shaped arrays)
full = full[:,1:probe.shape[1]+1,:]

def get_percentage(full, probe, threshold):
    def profile_red(im):
        pr = im[:,:,0] - im[:,:,1]
        return pr[pr.shape[0]//2]

    def zero(arr):
        z = np.argwhere(np.abs(np.diff(np.sign(arr))).astype(bool))
        if len(z):
            return z[0,0]
        else:
            return len(arr)

    full_red = profile_red(full)
    probe_red = profile_red(probe)
    mask = full_red > threshold
    diff = full_red[mask] - probe_red[mask]

    x0 = zero(diff - threshold) 
    percentage = x0 / diff.size * 100
    err = 2./diff.size * 100
    return percentage, err


print("{:.1f} p\m {:.1f} %".format(*get_percentage(full, probe, 75.0)))

Результат:

94.6 p\m 2.2 %
0 голосов
/ 08 декабря 2018

Вы ищете библиотеку Подушка .Существует два способа измерения цвета: оттенок, насыщенность, яркость (HSL) и красный, синий, зеленый (RGB).В библиотеке есть функции, позволяющие выполнять обе функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...