import os
import cv2
import xlwt
# 设置阈值
threshold = 100
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('Sheet1')
# 指定输入和输出文件夹
input_folder = 'G:\\0321_A'
output_folder = './output'
i = 0
# 遍历文件夹中的所有文件
for file_name in os.listdir(input_folder):
# 加载图像
image = cv2.imread(os.path.join(input_folder, file_name), cv2.IMREAD_GRAYSCALE)
# 如果无法加载图像,则跳过
if image is None:
continue
# 使用Laplacian算子计算清晰度
laplacian_image = cv2.Laplacian(image, cv2.CV_16S)
focus_measure = cv2.meanStdDev(laplacian_image)[1][0] ** 2
value = float(focus_measure)
# 如果清晰度超过指定阈值,则保存图像
if focus_measure > threshold:
print(i)
# output_file_name = os.path.join(output_folder, file_name)
# cv2.imwrite(output_file_name, image)
# print(f'Saved {output_file_name}')
i = i + 1
worksheet.write(i+1, 1, value)
# print(focus_measure)
workbook.save('data3.xls')
首先保存一个xls文件分析,所有的文件清晰程度都是多少,方便下面选定阈值。
import os
import cv2
import xlwt
# 设置阈值
threshold = 185
# 指定输入和输出文件夹
input_folder = 'G:\\0321_A'
output_folder = 'G:\\0327_A'
i = 0
# 遍历文件夹中的所有文件
for file_name in os.listdir(input_folder):
# 加载图像
image = cv2.imread(os.path.join(input_folder, file_name), cv2.IMREAD_GRAYSCALE)
# 如果无法加载图像,则跳过
if image is None:
continue
# 使用Laplacian算子计算清晰度
laplacian_image = cv2.Laplacian(image, cv2.CV_16S)
focus_measure = cv2.meanStdDev(laplacian_image)[1][0] ** 2
# 如果清晰度超过指定阈值,则保存图像
if focus_measure > threshold:
print(i)
output_file_name = os.path.join(output_folder, file_name)
cv2.imwrite(output_file_name, image)
print(f'Saved {output_file_name}')