Как рассчитать среднее значение для каждого пикселя? - PullRequest
0 голосов
/ 01 декабря 2018

Я хочу рассчитать среднее значение для каждого значения в пикселях и показать их отдельно. Например: среднее значение 124,34 (красный), 124,44 (зеленый), 124,67 (синий), 123,56 (серый) Я пытаюсь вот так ...

 import numpy as np
 import math 
 img = Image.open('cameraman.jpg')
 h,w=img.size 
 #print(h,w)
 arr = np.array(img)
 total = 0 
for i in range(arr.shape[0]):
      for j in range(arr.shape[1]):
            total+=arr[(i,j)]
  a=h*w
mean=(total)/a
print("Mean Value is: ",np.mean)

1 Ответ

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

Кратчайший ответ ( от Руана Б. ):

import cv2
import numpy
myimg = cv2.imread('image.jpg')
avg_color_per_row = numpy.average(myimg, axis=0)
avg_color = numpy.average(avg_color_per_row, axis=0)
print(avg_color)

Результат:

     Blue           Green          Red
[ 197.53434769  217.88439451  209.63799938]

Более расширенный, аналогичный вашему собственному методу: если вы используетеopencv, доступ к пикселю возвращает массив с цветами BGR.

import cv2
import numpy as np

img = cv2.imread('your_image.jpg')

totalBlue = 0
totalGreen = 0
totalRed = 0
totalPixels = 0

for line in img:
    for px in line:
        totalBlue += px[0]
        totalGreen += px[1]
        totalRed += px[2]
        totalPixels += 1

meanBlue = totalBlue/totalPixels
meanGreen = totalGreen/totalPixels
meanRed = totalRed/totalPixels

Чтобы получить среднее значение серого, вы можете загрузить ваше изображение как черно-белое изображение, используя

img = cv2.imread('your_image.jpg', 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...