源程序如下:
import numpy as np
from cv2 import cv2
import os
import matplotlib.pyplot as plt
#初始化一个图像数组
img = np.zeros(shape=(960, 720))
#root:当前正在遍历的这个文件夹的本身的地址
#dirs:该文件夹中所有的目录的名字(不包括子目录)
#files:该文件夹中所有的文件
for root, dirs, files in os.walk("./img"):
for i in range(20):
path = "./img/" + files[i]
img += cv2.imread(path, 0)
print(img / 20)
img = img / 20
#plt显示图片方法,不用除以255
# plt.imshow(img, cmap='gray')
# plt.show()
#opencv显示图片方法,要用img/255
img=img/255
cv2.imshow("img",img)
cv2.waitKey(0)
程序的目的是读取文件夹中20张图片,并把每个图片对应像素点进行叠加,在取平均,取完平均值后的图像矩阵为float类型。
使用cv2.imshow读取图片并显示,图片全部空白。打开imshow函数
BUG分析:注释写道如果图片是float型,为了保持图像精度,像素矩阵将乘以255, 所以对于原图像矩阵,显示都是为白色了。
解决方法:原图像除以255
其他方案:使用plt.imshow(img, cmap='gray'),直接可以显示图片