>我有六张图像,我想找到每个像素的中位数并从中创建一张新图片。我以这种方式创建了一个图像列表:
imgs=['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg']
然后我写了一个这样的 for 循环:
for image in imgs:
我发现有一个函数可以使用numpy找到中位数,但我不知道如何使用它。另外,找到中位数后,如何在屏幕的正确位置创建所有中位数的图片?如何将图像转换为数组?
您可以使用opencv读取图像
import cv2
import numpy as np
imgs=['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg']
np_images = []
for img in imgs:
image = cv2.imread(img,1)
if image is None:
print(img, "doesnot exist")
else:
np_images.append(image)
# assuming the dimensions of all images are the same
np_array = np.array(np_images)
median_image = np.median(np_array,axis=0)
cv2.imwrite("median_image.jpg",median_image)
编辑:
-
np_images
是一个数组,用于存储OpenCV读取的图像 -
p_value
是一个数组,用于存储像素的颜色值(row,col)
-
np.zeros
是一个产生零矩阵的函数(其值为零)的给定形状。
加快程序速度。