zoukankan      html  css  js  c++  java
  • python3 opencv 获取图片模糊度

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-#
    
    # -------------------------------------------------------------------------------
    # Name:         图片模糊度计算
    # Author:       yunhgu
    # Date:         2021/8/20 11:01
    # Description: 
    # -------------------------------------------------------------------------------
    import shutil
    from traceback import format_exc
    import cv2
    from pathlib import Path
    from PIL import Image
    
    import numpy as np
    
    
    def ImageToMatrix(file):
        # 读取图片
        im = Image.open(file)
        # 显示图片
        # im.show()
        width, height = im.size
        im = im.convert("L")
        data = im.getdata()
        data = np.matrix(data, dtype='float') / 255.0
    
        new_data = np.reshape(data, (height, width))
        return new_data
    
    
    def Brenner(img):
        x, y = img.shape
        D = 0
        for i in range(x - 2):
            for j in range(y - 2):
                D += (img[i + 2, j] - img[i, j]) ** 2
        return D
    
    
    def variance_of_laplacian(image):
        return cv2.Laplacian(image, cv2.CV_64F).var()
    
    
    def main(input_path, output_path):
        for file in Path(input_path).rglob("*.jpg"):
            # 拉普拉斯算子
            image = cv2.imdecode(np.fromfile(file, dtype=np.uint8), cv2.IMREAD_UNCHANGED)
            gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
            fm = variance_of_laplacian(gray)
            # Brenner 检测
            frame = ImageToMatrix(file)
            score = Brenner(frame)
            print(fm, score)
    
            # result = Path(output_path).joinpath("no_clear")
            # if fm >= 90:
            #     result = Path(output_path).joinpath("90")
            # elif fm >= 80:
            #     result = Path(output_path).joinpath("80")
            # elif fm >= 70:
            #     result = Path(output_path).joinpath("70")
            # elif fm >= 60:
            #     result = Path(output_path).joinpath("60")
            # elif fm >= 50:
            #     result = Path(output_path).joinpath("50")
            # elif fm >= 40:
            #     result = Path(output_path).joinpath("40")
            # elif fm >= 30:
            #     result = Path(output_path).joinpath("30")
            # elif fm >= 20:
            #     result = Path(output_path).joinpath("20")
            # elif fm >= 10:
            #     result = Path(output_path).joinpath("10")
            #
            # result.mkdir(parents=True, exist_ok=True)
            # shutil.copy(file, result)
    
    
    if __name__ == '__main__':
        print("Start...")
        # input_Folder = input("请输入源文件夹:")
        # output_Folder = input("请输入结果文件夹:")
        input_Folder = r"F:pythonProject图片模糊度计算color"
        output_Folder = r"F:pythonProject图片模糊度计算
    esult"
        try:
            main(input_Folder, output_Folder)
            print("finished")
        except Exception as err:
            print(f"程序运行失败!!!请联系数据处理中心:{err}")
            print(format_exc())
        input("按任意键盘退出!!!")
    
    不论你在什么时候开始,重要的是开始之后就不要停止。 不论你在什么时候结束,重要的是结束之后就不要悔恨。
  • 相关阅读:
    织梦dedecms网站数据库出错如何修复
    如何实现织梦dedecms会员登陆后就不显示广告
    搜索框里显示字段鼠标点击后就隐藏的方法
    织梦dedecms首页如何调用联动类别代码
    织梦CMS友情链接调用方法技巧大全
    DedeCMS 标题seo优化给列表页加上第x页
    DedeCMS采集教程:过滤替换的技巧
    织梦dedecms网站数据库出错如何修复
    压力测试-查看索引
    时间同步服务部署
  • 原文地址:https://www.cnblogs.com/yunhgu/p/15165856.html
Copyright © 2011-2022 走看看