python的图片清晰度判断:
1.拉普拉斯算子
2.Scharr算子
3.Tenengrad算子
代码实现:
import os
from ClearJudgmentAlgorithm import get_picture_scharr,get_picture_laplacian,get_picture_tenengrad,get_dict_max
import datetime
if __name__ == '__main__':
stratTime = datetime.datetime.now()
img_folder = 'judgmentImages/'
txt_file = os.listdir(img_folder)
resultLaplacian={}
resultScharr = {}
resultTenengrad = {}
for index in range(len(txt_file)):
imageName=txt_file[index].split('.')[0]
resultLaplacian[imageName]=get_picture_laplacian(os.path.join(img_folder, txt_file[index]))
resultScharr[imageName]=get_picture_scharr(os.path.join(img_folder, txt_file[index]))
resultTenengrad[imageName] = get_picture_tenengrad(os.path.join(img_folder, txt_file[index]))
print(str("拉普拉斯算子(Laplacian算子):"))
print(resultLaplacian)
print(get_dict_max(resultLaplacian))
print(str("Scharr(沙尔算子)算子"))
print(resultScharr)
print(get_dict_max(resultScharr))
print(str("Tenengrad(Sobel算子):"))
print(resultTenengrad)
print(get_dict_max(resultTenengrad))
endTime = datetime.datetime.now()
print(endTime-stratTime)
ClearJudgmentAlgorithm包代码如下
import cv2
from numpy import mean
def get_picture_laplacian(imgPath):
image = cv2.imread(imgPath);
img2gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
imageVar = cv2.Laplacian(img2gray, cv2.CV_64F).var()
image_var = f'{mean(imageVar):.2f}'
return image_var
def get_picture_scharr(image_path):
image = cv2.imread(image_path)
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
image_scharrx = cv2.Scharr(image_gray, cv2.CV_16S, 1, 0).var()
image_scharry = cv2.Scharr(image_gray, cv2.CV_16S, 0, 1).var()
image_var = f'{mean(image_scharrx + image_scharry):.2f}'
return image_var
def get_picture_tenengrad(image_path):
image = cv2.imread(image_path)
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
image_sobel = cv2.Sobel(image_gray, cv2.CV_16U, 1, 1)
image_var = f'{mean(image_sobel):.2f}'
return image_var
#python的dict的取最大值
def get_dict_max(dict1):
index=0
value=0.0
for i in dict1.keys():
value=max(value,float(dict1.get(i)))
if value==float(dict1.get(i)):
index=i
return dict([(index,value)])