已经有了压缩前后的彩色图像,写一个在jupyter notebooks上,先调整尺寸一致,再计算其压缩率的代码

时间: 2024-02-17 12:00:47 浏览: 19
好的,以下是一个示例代码: ```python from PIL import Image import os # 设置图像路径 img_path1 = "image1.jpg" img_path2 = "image2.jpg" # 打开图像并调整尺寸 img1 = Image.open(img_path1) img2 = Image.open(img_path2) width = min(img1.width, img2.width) height = min(img1.height, img2.height) img1 = img1.resize((width, height)) img2 = img2.resize((width, height)) # 计算压缩率 size1 = os.path.getsize(img_path1) size2 = os.path.getsize(img_path2) compression_rate = (size2 / size1) * 100 print("压缩率为:%.2f%%" % compression_rate) ``` 注意,这里使用了Pillow库来打开和调整图像尺寸,使用os库获取文件大小。你需要根据实际情况替换`img_path1`和`img_path2`的值。
相关问题

已经有了压缩前后的彩色图像,写一个在jupyter notebooks上计算七压缩率的代码

好的,以下是一个在 Jupyter Notebook 上计算七种压缩率的代码示例。这个代码使用了 Python 的 Pillow 库进行图像的读取和压缩,以及 NumPy 库进行数组计算。 ```python from PIL import Image import numpy as np import io # 读取原始图像和压缩后图像 original_img = Image.open('test.jpg') compressed_img = Image.open('test_compressed.jpg') # 将图像转换为 NumPy 数组 original_img_arr = np.array(original_img) compressed_img_arr = np.array(compressed_img) # 计算原始图像大小 original_size = original_img_arr.nbytes # 计算压缩后图像大小 compressed_size = compressed_img_arr.nbytes # 计算压缩率 compression_ratio = compressed_size / original_size # 计算峰值信噪比(PSNR) mse = np.mean((original_img_arr - compressed_img_arr) ** 2) psnr = 10 * np.log10(255**2 / mse) # 计算结构相似性指数(SSIM) from skimage.metrics import structural_similarity as ssim ssim_score = ssim(original_img_arr, compressed_img_arr, multichannel=True) # 计算峰值信噪比改进比(PSNR-HVS) from skimage.metrics import peak_signal_noise_ratio as psnr_hvs psnr_hvs_score = psnr_hvs(original_img_arr, compressed_img_arr, data_range=original_img_arr.max()) # 计算多样性信噪比(MS-SSIM) from skimage.metrics import multi_scale_ssim as ms_ssim ms_ssim_score = ms_ssim(original_img_arr, compressed_img_arr, data_range=original_img_arr.max(), win_size=11) # 计算复杂度压缩比(CPC) cpc = psnr / compression_ratio # 输出七种压缩率 print(f"Compression ratio: {compression_ratio:.4f}") print(f"Peak Signal-to-Noise Ratio (PSNR): {psnr:.2f}") print(f"Structural Similarity Index (SSIM): {ssim_score:.4f}") print(f"Peak Signal-to-Noise Ratio - HVS (PSNR-HVS): {psnr_hvs_score:.2f}") print(f"Multi-Scale Structural Similarity (MS-SSIM): {ms_ssim_score:.4f}") print(f"Complexity-Compression Ratio (CPC): {cpc:.2f}") print(f"Original size: {original_size:,}") print(f"Compressed size: {compressed_size:,}") ``` 在这个示例中,我们首先使用 Pillow 库读取了一张名为 `test.jpg` 的原始彩色图像和一张名为 `test_compressed.jpg` 的压缩后彩色图像,并将它们分别转换为 NumPy 数组。然后,我们使用 NumPy 和 scikit-image 库计算了七种压缩率,包括压缩率、峰值信噪比(PSNR)、结构相似性指数(SSIM)、峰值信噪比改进比(PSNR-HVS)、多尺度结构相似性指数(MS-SSIM)、复杂度压缩比(CPC)以及原始图像大小和压缩后图像大小。最后,我们输出了这七种压缩率的结果。 请注意,这个示例中使用了 scikit-image 库的一些函数,如果您的环境中没有安装该库,请先使用 pip 或 conda 进行安装。另外,这个示例中计算的七种压缩率可能并不完整,具体的压缩率指标可以根据需要进行调整。

写一个在jupyter notebooks上测量彩色图像压缩前后压缩率的代码

好的,以下是一个在 Jupyter Notebook 上测量彩色图像压缩前后压缩率的代码示例。这个代码使用了 Python 的 Pillow 库进行图像的读取和压缩,以及 NumPy 库进行数组计算。 ```python from PIL import Image import numpy as np import io # 读取原始图像 img = Image.open('test.jpg') # 将图像转换为 NumPy 数组 img_arr = np.array(img) # 计算原始图像大小 original_size = img_arr.nbytes # 压缩图像 # 这里使用 JPEG 压缩,压缩质量为 70% compressed_img = io.BytesIO() img.save(compressed_img, format='JPEG', quality=70) # 计算压缩后图像大小 compressed_size = compressed_img.tell() # 读取压缩后图像 compressed_img.seek(0) compressed_img_data = compressed_img.read() compressed_img = Image.open(io.BytesIO(compressed_img_data)) # 将压缩后图像转换为 NumPy 数组 compressed_img_arr = np.array(compressed_img) # 计算压缩率 compression_ratio = compressed_size / original_size # 输出压缩前后的大小和压缩率 print(f"Original size: {original_size:,}") print(f"Compressed size: {compressed_size:,}") print(f"Compression ratio: {compression_ratio:.2f}") ``` 在这个示例中,我们首先使用 Pillow 库读取了一张名为 `test.jpg` 的彩色图像,并将其转换为 NumPy 数组。然后,我们计算了原始图像的大小,并使用 JPEG 压缩算法对图像进行了压缩。接着,我们计算了压缩后图像的大小,并将其读取为 Pillow 对象。我们将压缩后的图像再次转换为 NumPy 数组,并计算了压缩率。最后,我们输出了压缩前后的大小和压缩率的结果。 请注意,这个示例中压缩质量设置为 70%,这个值可以根据需要进行调整。另外,如果要测量多张图像的压缩前后压缩率,可以将这个代码放入循环中,对每张图像进行压缩和压缩率计算。

相关推荐

最新推荐

recommend-type

华为OD机试D卷 - 用连续自然数之和来表达整数 - 免费看解析和代码.html

私信博主免费获取真题解析以及代码
recommend-type

Screenshot_2024-05-10-20-21-01-857_com.chaoxing.mobile.jpg

Screenshot_2024-05-10-20-21-01-857_com.chaoxing.mobile.jpg
recommend-type

数字图像处理|Matlab-频域增强实验-彩色图像的频域滤波.zip

数字图像处理|Matlab-频域增强实验-彩色图像的频域滤波.zip
recommend-type

2024-2030中国定向转向膜市场现状研究分析与发展前景预测报告.docx

2024-2030中国定向转向膜市场现状研究分析与发展前景预测报告
recommend-type

开源工时填报管理系统安装包

开源工时填报管理系统安装包
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

spring添加xml配置文件

1. 创建一个新的Spring配置文件,例如"applicationContext.xml"。 2. 在文件头部添加XML命名空间和schema定义,如下所示: ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。