通过查找图片清晰度的比较指标,选择用拉普拉斯变化的核函数,计算图片的方差。值越大,代表图片越清晰
导入需要的库,并且定义函数。
import cv2
import os
import time #打印程序运行时间的库
import numpy as np
#利用拉普拉斯
def getImageVar(imgPath):
image = cv2.imread(imgPath)
img2gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
imageVar = cv2.Laplacian(img2gray, cv2.CV_16U).var()
return imageVar
写入文件夹地址,调用前面写的函数就可以了。这里是直接算出文件夹所有的图片的方差,存进列表后,按从小到大的
path_clear= r"C:\Users\Administrator\Desktop\imgs\clear"
std_clear=[]
for path in os.listdir(os.path.join(path_clear)):
start = time.clock()
path = os.path.join(path_clear,path)
# print(path)##检查一下图片的地址是不是正确,有没有中文字符。调用cv库要保证路径中全英文,不然会报错
img = getImageVar(path)
end = time.clock()
std_clear.append(round(img,4))#只保留到小数点后4位查看。也可以不要round
# print('Running time: %s Seconds' % (end - start))打印计算单张图片的方差
std_clear.sor