|

楼主 |
发表于 2024-7-15 11:04:54
|
显示全部楼层
这里哪一行是输出的图片大小
import os
import cv2
import numpy as np
from glob import glob
np.set_printoptions(threshold=np.inf, linewidth=np.inf)
def calculate_coarseness(image, kmax=5):
h, w = image.shape
average_gray = np.zeros((kmax, h, w))
print(h,w)
for k in range(kmax):
window_size = 2 ** k
kernel = np.ones((window_size, window_size), dtype=np.float64) / (window_size ** 2)
average_gray[k] = cv2.filter2D(image, -1, kernel)
#print("kernel=",kernel)
#print("average_gray[k[0]]=", average_gray[k][0])
#image为图片,
# -1为深度,也可以是cv2.CV_16S`, `cv2.CV_32F
Sbest = np.zeros((h, w))
for k in range(1, kmax):
#print("average_gray[k[0]]=",average_gray[k][:h - 2 ** k, :])
#print("dsdsdss===",average_gray[k][:h - 2 ** k, :] )
Sv = np.abs(average_gray[k][:h - 2 ** k, :] - average_gray[k][2 ** k:, :])
Sh = np.abs(average_gray[k][:, :w - 2 ** k] - average_gray[k][:, 2 ** k:])
Sbest_temp = np.maximum(Sv[:h - 2 ** k, :w - 2 ** k], Sh[:h - 2 ** k, :w - 2 ** k]) * (2 ** k)
Sbest[:h - 2 ** k, :w - 2 ** k] = np.maximum(Sbest[:h - 2 ** k, :w - 2 ** k], Sbest_temp)
return np.mean(Sbest)
def calculate_contrast(image):
mean = np.mean(image)
variance = np.mean((image - mean) ** 2)
std_dev = np.sqrt(variance)
return std_dev
def batch_process_images(folder_path):
image_files = glob(os.path.join(folder_path, "*.jpg")) + \
glob(os.path.join(folder_path, "*.png")) + \
glob(os.path.join(folder_path, "*.jpeg"))
results = []
for image_file in image_files:
image = cv2.imread(image_file, cv2.IMREAD_GRAYSCALE)
coarseness = calculate_coarseness(image)
contrast = calculate_contrast(image)
results.append({
'file': image_file,
'coarseness': coarseness,
'contrast': contrast
})
#print(f"Processed {image_file}: Coarseness={coarseness}, Contrast={contrast}")
#print("contrast",contrast)
#for x in range(200):
#print(x)
return results
# 使用示例:
folder_path = "C:\\Users\\shiro\\Desktop\\digital image\\2.0 GaussianBlur"
results = batch_process_images(folder_path)
print("All images processed.")
|
|