python的图片清晰度判断

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)])



  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值