python用多种方法综合判断并删除模糊图片代码
时间: 2024-03-19 10:44:45 浏览: 13
以下是使用多种方法综合判断并删除模糊图片的Python代码示例:
```python
import cv2
import os
# 对比度检测
def check_contrast(image):
img_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
img_hist = cv2.equalizeHist(img_gray)
contrast = cv2.compare(img_gray, img_hist, cv2.CMP_GT)
return contrast
# 清晰度检测
def check_sharpness(image):
img_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
laplacian_var = cv2.Laplacian(img_gray, cv2.CV_64F).var()
return laplacian_var
# 模糊检测
def check_blur(image):
img_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
laplacian_var = cv2.Laplacian(img_gray, cv2.CV_64F).var()
return laplacian_var
# 噪点检测
def check_noise(image):
img_denoised = cv2.fastNlMeansDenoisingColored(image, None, 10, 10, 7, 21)
difference = cv2.subtract(image, img_denoised)
gray = cv2.cvtColor(difference, cv2.COLOR_BGR2GRAY)
noise = cv2.countNonZero(gray)
return noise
# 综合判断
def is_blurry(image):
contrast = check_contrast(image)
sharpness = check_sharpness(image)
blur = check_blur(image)
noise = check_noise(image)
if (contrast < 100) or (sharpness < 100) or (blur < 10) or (noise > 100):
return True
else:
return False
# 删除模糊图片
def delete_blurry_images(directory):
for filename in os.listdir(directory):
if filename.endswith(".jpg") or filename.endswith(".png"):
image_path = os.path.join(directory, filename)
image = cv2.imread(image_path)
if is_blurry(image):
os.remove(image_path)
# 测试代码
if __name__ == '__main__':
directory = 'test_images'
delete_blurry_images(directory)
```
在上面的代码中,我们使用了OpenCV库中的函数来实现对比度、清晰度、模糊和噪点的检测,并综合判断是否为模糊图片。如果是模糊图片,则将其删除。可以将需要判断的图片放在`test_images`文件夹中,然后运行代码即可。