【图像处理】Python判断一张图像是否亮度过低,图片模糊判定

news/2024/11/24 1:09:58/

文章目录

  • 亮度判断
  • 模糊判断

亮度判断

比如:
在这里插入图片描述
直方图:
在这里插入图片描述

代码:

这段代码是一个用于判断图像亮度是否过暗的函数is_dark,并对输入的图像进行可视化直方图展示。

首先,通过import语句导入了cv2和matplotlib.pyplot模块,用于图像处理和可视化。

is_dark函数的作用是判断输入图像的平均亮度是否低于设定的阈值。函数接受两个参数:image_path表示图像文件的路径,threshold表示亮度阈值,默认为100。函数内部的步骤如下:

使用cv2.imread函数读取图像文件,将图像存储在变量img中。
使用cv2.cvtColor函数将图像转换为灰度图像,存储在变量gray中。
使用cv2.mean函数计算灰度图像的平均亮度,存储在变量average_brightness中。
判断average_brightness是否低于设定的阈值threshold,如果是,则返回True表示图像光线过暗;否则返回False表示图像光线正常。
接下来是测试代码部分:

定义了一个图像文件的路径image_path,这里是一个示例路径,请根据实际情况修改。
调用is_dark函数判断图像光线是否过暗,如果返回True,说明图像光线过暗,输出"图片光线过暗";如果返回False,说明图像光线正常,输出"图片光线正常"。
最后,使用cv2.imread函数再次读取图像文件,将图像存储在变量img中。然后使用plt.hist函数绘制灰度图像的直方图,并通过plt.xlabel和plt.ylabel设置横轴和纵轴的标签。最后使用plt.show显示直方图。这样可以直观地查看图像的亮度分布情况。

import cv2
import matplotlib.pyplot as pltdef is_dark(image_path, threshold=100):# 读取图像img = cv2.imread(image_path)# 转换为灰度图像gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 计算灰度图像的平均亮度average_brightness = cv2.mean(gray)[0]# 判断亮度是否低于阈值if average_brightness < threshold:return Trueelse:return False# 测试代码
image_path = r'E:\facedata\img_data_new\10001normal_face\10001normal_face_0.5893__041430.jpg'
if is_dark(image_path):print("图片光线过暗")
else:print("图片光线正常")# 可视化直方图
img = cv2.imread(image_path)
plt.hist(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY).ravel(), bins=256, color='gray')
plt.xlabel('Pixel Value')
plt.ylabel('Frequency')
plt.show()

模糊判断

import osimport cv2
from tqdm import tqdmdef is_blurry(image_path):image = cv2.imread(image_path)if image is None:raise Exception("无法读取图片")gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)blur_score = cv2.Laplacian(gray, cv2.CV_64F).var()return str(round(blur_score * 100)).rjust(10, "0")def listPathAllfiles(dirname):result = []for maindir, subdir, file_name_list in os.walk(dirname):for filename in file_name_list:apath = os.path.join(maindir, filename)result.append(apath)return resultwindowspath = r"E:\facedata\img_data_new"
files = listPathAllfiles(windowspath)
for filename in tqdm(files):try:num = is_blurry(filename)except:num = str(round(0 * 100)).rjust(10, "0")new_file_name = num + "____" + os.path.basename(filename)new_file_name = os.path.join(os.path.dirname(filename), new_file_name)os.rename(filename, new_file_name)

http://www.ppmy.cn/news/903663.html

相关文章

TimeZone.getTimeZone 时区参数说明

使用TimeZone.getTimeZone方法来获取time zone值&#xff0c;该方法传入一个ID参数&#xff0c;参数说明如下&#xff1a; the ID for a <code>TimeZone</code>, either an abbreviation such as "PST", a full name such as "America/Los_Angeles&…

【技能实训】DMS数据挖掘项目-Day11

文章目录 任务12【任务12.1】创建用户信息表【任务12.2】在com.qst.dms.entity下创建用户实体类User&#xff0c;以便封装用户数据【任务12.3】在com.qst.dms.service下创建用户业务类UserService【任务12.4】在项目根目录下创建图片文件夹images&#xff0c;存储dms.png【任务…

ZIP/RAR/ACE/ARJ/PDFnbsp;解密工具包

zip文件密码破译:http://download.pchome.net/utility/encrpt/4804.html RAR文件密码破译:http://download.pchome.net/utility/encrpt/12456.html DOC文件密码破译:http://download.pchome.net/utility/encrpt/9295.html PDF文件密码破译:http://download.pchome.net/utility/…

加密僵尸:ERC721标准和加密收藏品

ERC721 标准, 多重继承 让我们来看一看 ERC721 标准&#xff1a; contract ERC721 {event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);function balanc…

基于同态加密的恶意安全 MPC:BDOZ、SPDZ

参考文献&#xff1a; Bendlin R, Damgrd I, Orlandi C, Zakarias S. Semi-homomorphic encryption and multiparty computation[C]//Annual International Conference on the Theory and Applications of Cryptographic Techniques. Springer, Berlin, Heidelberg, 2011: 169…

基于JAVA的RSA文件加密软件的设计与实现免费源代码+LW

2.1.1 功能分析 经过1.2.2节的论述&#xff0c;我们可以将对软件的要求总结如下&#xff1a; ① 可以按要求的位数生成非对称密钥。 ② 可以保存密钥和装载密钥&#xff0c;密钥保存为纯文本。 ③ 可以用指定密钥以RSA算法加密任意一个文件&#xff0c;加密生成的数据为纯文本。…

sam文件获取与解密

前言 ntds.dit文件位置: C:\Windows\NTDS\NTDS.dit system文件位置:C:\Windows\System32\config\SYSTEM sam文件位置:C:\Windows\System32\config\SAM #通过SAM数据库获得用户hash的方法 远程读取 mimikatz在线读取SAM数据库 privilege::debug token::elevate lsadump::sam po…

前女友闺蜜给我发了一个压缩包,居然还带密码?暴力破解ZIP加密文件的密码!

前言 今晚下班后微信收到一跳消息&#xff01;是前女友的闺蜜发过来的&#xff0c;然后让我自己去猜密码&#xff0c;本来我是不打算理她的&#xff01;但是她后面说里面有你想不到的福利&#xff01;这句话对于一枚&#xff08;lsp&#xff09;不对一枚宅男程序员没有抵抗力&a…