Как рассчитать процентное содержание зеленого и процентное содержание синего в изображениях, массив уже сделан, для цикла чтения файла изображения - PullRequest
0 голосов
/ 09 октября 2018

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

#Import Libraries 

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
from PIL import Image
import glob

#option comd c and then cmd v to paste path /Users/Gilly/Desktop/Comp 180/images
#2 Reads the image of a sunset into an array LOOP

list_files=glob.glob("/Users/Gilly/Desktop/Comp 180/images/*.jpg")

for i in list_files:
    img = mpimg.imread(i)
    print(img)

#Plots the image from the array data 

for i in list_files:
    imgplot = plt.imshow(img)
    plt.show()

#Calculate % of Green and Blue in the images 

Ответы [ 2 ]

0 голосов
/ 10 октября 2018
emptyBlue = []
emptyGreen= []
for i in list_files:
    img = mpimg.imread(i)
    imgplot = plt.imshow(img)
    RGBtuple = np.array(img).mean(axis=(0,1))
    averageRed = RGBtuple[0]
    averageGreen = RGBtuple[1]
    averageBlue = RGBtuple[2]
    percentageGreen = averageGreen/(averageRed+averageGreen+averageBlue)
    percentageBlue = averageBlue/(averageRed+averageGreen+averageBlue)
    percentageRed = averageRed/(averageRed+averageGreen+averageBlue)
    emptyBlue+=[percentageBlue]
    emptyGreen+=[percentageGreen]
    print('Percent Blue',percentageBlue)
    print('Percent Green',percentageGreen)
print('Percentages of Blue',emptyBlue)
print('Percentages of Green',emptyGreen)
0 голосов
/ 09 октября 2018

Вот подсказка, с которой можно начать.

Чтобы найти среднее значение синего, вам нужно будет перебирать каждый пиксель изображения.Изображение, с которым вы работаете (хранится в переменной img), представляет собой список строк, а каждая строка представляет собой список пикселей.

Вложенный цикл for позволяет выполнять итерацию по каждому пикселю:

for row in img:
    for pixel in row:
        red = pixel[0]
        green = pixel[1]
        blue = pixel[2]
        print(blue)

Если вы застряли, запомните average = total / count.

...