# 导入所需的库 from PIL import Image import numpy as np import torch import matplotlib.pyplot as plt import cv2 import math def calculate_psnr(img1, img2): # img1 and img2 have range [0, 255] img1 = img1.astype(np.float64) img2 = img2.astype(np.float64) mse = np.mean((img1 - img2) ** 2) return 20 * math.log10(255.0 / math.sqrt(mse)) # 读取图片并转换为numpy数组 low_img = cv2.imread("img/low/2.png") low_img = np.array(low_img) # print(low_img.shape) high_img = cv2.imread("img/high/9.png") high_img2 = np.array(high_img) # print(high_img.shape) gt_img = cv2.imread("img/high/2.png") gt_img = np.array(gt_img) low_img = low_img / 255. high_img = high_img2 / 255. mean_gray_out = cv2.cvtColor(low_img.astype(np.float32), cv2.COLOR_BGR2GRAY).mean() mean_gray_gt = cv2.cvtColor(high_img.astype(np.float32), cv2.COLOR_BGR2GRAY).mean() normal_img_adjust = np.clip(low_img * (mean_gray_gt / mean_gray_out), 0, 1) output_low_img = (normal_img_adjust * 255).astype(np.uint8) print(output_low_img.shape) psnr = calculate_psnr(output_low_img, gt_img) print(psnr) cv2.imwrite('img/output/1.png', output_low_img) # 计算图片的直方图,假设图片是灰度图,像素值范围是0-255 # low_hist = torch.histc(torch.from_numpy(low_img_arr), bins=256, min=0, max=255) # 绘制直方图 # plt.bar(np.arange(256), low_hist.numpy()) # plt.xlabel("Pixel value") # plt.ylabel("Frequency") # plt.title("Histogram of image") # plt.show() # 显示直方图 # plt.savefig("histogram.jpg") #
标签:,img,cv2,high,low,np,img2 From: https://www.cnblogs.com/yyhappy/p/17924769.html