图片录入时,有时录入了许多重复的图片,但是图片的规格(宽,高)是一定的,后期的处理往往要得到一张或几张最为清晰的图片使用.方法如下:
1.读入图片
2.转为灰度图片
3.通过拉普拉斯掩模做卷积运算,计算标准差,值就代表图片清晰度
#-*-coding:utf-8-*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import cv2
import os
rgb_files=os.listdir('./pics')
for dir in rgb_files:
print (dir)
in_files = os.listdir('./pics/'+dir)
max_value = 0
max_path = ''
for x in range(len(in_files)):
image_rgb_path = './pics/'+ dir +'/'+ in_files[x]
image = cv2.imread(image_rgb_path)
# image=cv2.GaussianBlur(image,(3,3),1.8)
img2gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) #bgr change to gray
imageVar=cv2.Laplacian(img2gray, cv2.CV_64F).var() #compute edge use laplacian
# print (image_rgb_path,",,,,,,,,,,,,,",imageVar)
if max_value < imageVar:
max_value = imageVar
max_path = image_rgb_path
print ("---------------------------")
print (max_path,",,,,,,,,,,,,,",max_value)
print ("---------------------------\n\r")
***
误解:
从效果上来看,很多图片是占用Size(硬盘)最大的图片,就误以为挑选size最大的为最清晰,其实并不是.