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\图片模糊度计算\result"
try:
main(input_Folder, output_Folder)
print("finished")
except Exception as err:
print(f"程序运行失败!!!请联系数据处理中心:{err}")
print(format_exc())
input("按任意键盘退出!!!")
不论你在什么时候开始,重要的是开始之后就不要停止。
不论你在什么时候结束,重要的是结束之后就不要悔恨。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律