如何计算10张图片上相同像素的平均值?

时间:2018-01-19 14:44:16

标签: python python-3.x numpy opencv

我希望获得这10张照片的每张照片的相同像素(150,220)的平均值。

怎么做?

每张照片都是相同的尺寸。

例如:

IMG1 [220150] = [1,2,3]

IMG2 [220150] = [2,3,4]

...

IMG9 [220150] = [9,10,11]

img10 [220150] = [10,11,12]

avg_value = [(1 + 2 + ...... + 9 + 10)/ 10,(2 + 3 + ...... + 10 + 11)/ 10,(3 + 4 + ...... + 11 + 12)/ 10 ]

我的代码:

import cv2

img1 = cv2.imread( r'E:/0001.jpg' )
img2 = cv2.imread( r'E:/0002.jpg' )
img3 = cv2.imread( r'E:/0003.jpg' )
img4 = cv2.imread( r'E:/0004.jpg' )
img5 = cv2.imread( r'E:/0005.jpg' )
img6 = cv2.imread( r'E:/0006.jpg' )
img7 = cv2.imread( r'E:/0007.jpg' )
img8 = cv2.imread( r'E:/0008.jpg' )
img9 = cv2.imread( r'E:/0009.jpg' )
img10 = cv2.imread( r'E:/0010.jpg' )

img_array = [img1,img2,img3,img4,img5,img6,img7,img8,img9,img10]

1 个答案:

答案 0 :(得分:2)

以下是我们如何使用numpy计算一组图像中特定像素的平均像素值。

import numpy as np
import cv2

names = [r'E:/0001.jpg', 
         r'E:/0002.jpg',
         r'E:/0003.jpg',
         r'E:/0004.jpg',
         r'E:/0005.jpg',
         r'E:/0006.jpg',
         r'E:/0007.jpg',
         r'E:/0008.jpg',
         r'E:/0009.jpg',
         r'E:/0010.jpg'];


#Read all the images
images = [cv2.imread(i) for i in names];

#Get that specific pixel of all the images (making a 2D array). Exclude non-existing images
vals = np.array([im[220,150,:] for im in images if im is not None]);

#Compute mean along the first axis of 2D array
m = np.mean(vals, axis=0);

print(m)

在Ubuntu 14.04 上使用 Python 3.4 OpenCV 3.4 进行测试。