用python 编写一段程序,完成以下内容: 读入图像Lenna.png 读入 Lenna. jpg,比较两个图像数据,它们是否相等?为什么?计算两个图像数据之间的 PSNR 值。skimage.metrics.peak_ signal noise_ ratio 函数用于计算峰值信号-噪声 比(PSNR):PSNR=10 1ogi0(peakval’/NSE)其中 peakval 是图像灰度级的最大值(e.g. uint8 图像为 255),MSE 是A和ref 之间的均方差。PSNR 值越大,说明A和ref 越相似,若A和ref 相等,PSNR 等于无穷大
时间: 2023-04-12 21:01:17 浏览: 126
以下是用 Python 编写的程序,可以完成读入图像 Lenna.png 和 Lenna.jpg,比较两个图像数据是否相等,并计算它们之间的 PSNR 值:
import numpy as np
from skimage import io, metrics
# 读入图像 Lenna.png 和 Lenna.jpg
img1 = io.imread('Lenna.png')
img2 = io.imread('Lenna.jpg')
# 比较两个图像数据是否相等
if np.array_equal(img1, img2):
print("两个图像数据相等")
else:
print("两个图像数据不相等")
# 计算两个图像数据之间的 PSNR 值
psnr = metrics.peak_signal_noise_ratio(img1, img2)
print("PSNR 值为:", psnr)
如果两个图像数据相等,程序会输出“两个图像数据相等”,否则会输出“两个图像数据不相等”。无论两个图像数据是否相等,程序都会计算它们之间的 PSNR 值,并输出 PSNR 值。
相关问题
用python 编写一段程序,完成以下内容: 用cv2.imread读入png彩色图像并展示,图片Lenna.png转换成JPEGG格式并用cv2.imwrite 再读入 Lenna. jpg,比较两个图像数据,它们是否相等?为什么?计算两个图像数据之间的 PSNR 值。
以下是 Python 代码:
import cv2
# 读入 PNG 彩色图像并展示
img_png = cv2.imread('Lenna.png', cv2.IMREAD_COLOR)
cv2.imshow('PNG Image', img_png)
cv2.waitKey(0)
# 将 PNG 图像转换成 JPEG 格式并保存
cv2.imwrite('Lenna.jpg', img_png, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
# 读入 JPEG 图像并展示
img_jpg = cv2.imread('Lenna.jpg', cv2.IMREAD_COLOR)
cv2.imshow('JPEG Image', img_jpg)
cv2.waitKey(0)
# 比较两个图像数据是否相等
if img_png.shape == img_jpg.shape and not (img_png != img_jpg).any():
print('两个图像数据相等')
else:
print('两个图像数据不相等')
# 计算两个图像数据之间的 PSNR 值
mse = ((img_png - img_jpg) ** 2).mean()
psnr = 10 * (cv2.cv2_log10(255 ** 2 / mse))
print('PSNR 值为:', psnr)
对于第一个问题,程序会读入 Lenna.png 图像并展示,然后将其转换成 JPEG 格式并保存为 Lenna.jpg,再读入 Lenna.jpg 图像并展示。接着,程序会比较两个图像数据是否相等,如果相等,则输出“两个图像数据相等”,否则输出“两个图像数据不相等”。最后,程序会计算两个图像数据之间的 PSNR 值,并输出结果。
注意:在比较两个图像数据是否相等时,我们使用了 numpy 库中的 any() 函数,该函数用于判断数组中是否存在任意一个非零元素。如果两个图像数据相等,则它们的形状应该相同,且它们的每个像素值也应该相同,因此我们可以使用 not (img_png != img_jpg).any() 来判断它们是否相等。
用python 编写一段程序,完成以下内容: (1)读入图像Lenna.png, 品示该图像,并保存图像成 JPEG 格式文件 Lenna. jpg,比较 PNG 格式和 JPEG 格式文件,哪个文件占用的存储空间大?
以下是 Python 代码,可以实现读取图像 Lenna.png 并将其保存为 JPEG 格式文件 Lenna.jpg:
from PIL import Image
# 读取图像
img = Image.open('Lenna.png')
# 显示图像
img.show()
# 保存为 JPEG 格式文件
img.save('Lenna.jpg', 'JPEG')
# 比较 PNG 和 JPEG 文件大小
import os
png_size = os.path.getsize('Lenna.png')
jpg_size = os.path.getsize('Lenna.jpg')
if png_size > jpg_size:
print('PNG 格式文件占用的存储空间大')
else:
print('JPEG 格式文件占用的存储空间大')
注意:这个问题是一个编程类的问题,可以回答。