最近在做人脸识别清洗样本的工作,发现经过人脸对齐后存在部分图片十分模糊,所以用opencv滤了一下。
原理就是使用了cv2.Laplacian()这个方法,代码如下。图片越模糊,imageVar的值越小,图像越模糊。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#-*-coding:utf-8-*- import sys reload (sys) sys.setdefaultencoding( 'utf-8' ) import os import cv2 import shutil THRESHOLD = 30.0 dst_root = r '/media/unionpay/0009FFAB000A9861/CASIA&KFZX_CLEAR' for fpath, dirs, fs in os.walk( '/media/unionpay/0009FFAB000A9861/CASIA&KFZX' ): i = 0 for dir in dirs: i + = 1 if i % 100 = = 0 : print ( str (i) + 'folders processed current:' + dir ) abs_dir = os.path.join(fpath, dir ) for _, __, fs in os.walk(abs_dir): clear_img_list = [] for f in fs: item = os.path.join(_, f) image = cv2.imread(os.path.join( "/media/unionpay/0009FFAB000A9861/CASIA&KFZX/0000447" , item)) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) imageVar = cv2.Laplacian(gray, cv2.CV_64F).var() if not imageVar < THRESHOLD: clear_img_list.append(item) dst_folder = os.path.join(dst_root, dir ) if len (clear_img_list) > = 15 : if not os.path.exists(dst_folder): os.mkdir(dst_folder) for item in clear_img_list: dst_path = os.path.join(dst_folder, item.split( '/' )[ - 1 ]) shutil.copy(item, dst_path) |
以上这篇python模糊图片过滤的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/u014642834/article/details/78532798