提供能修改压缩率的完整代码
时间: 2023-10-08 09:05:52 浏览: 48
好的,以下是能够修改压缩率的完整代码:
```python
import scipy.fftpack as fp
from skimage.io import imread
from skimage.color import rgb2gray, gray2rgb
import matplotlib.pyplot as plt
from skimage.draw import rectangle_perimeter
import numpy as np
import cv2
import numpy as np
import matplotlib.pylab as plt
from mpl_toolkits.mplot3d import Axes3D # noqa: F401 unused import
from mpl_toolkits.axes_grid1 import make_axes_locatable
from skimage.metrics import peak_signal_noise_ratio, structural_similarity
from sklearn.metrics import mean_squared_error, mean_absolute_error
from matplotlib.ticker import LinearLocator, FormatStrFormatter
from scipy.fftpack import dct, idct
import cv2 as cv
def dct2(a):
return dct(dct(a, axis=0, norm='ortho'), axis=1, norm='ortho')
def idct2(a):
return idct(idct(a, axis=0, norm='ortho'), axis=1, norm='ortho')
# 加载图像
im = rgb2gray(imread('2.jpg'))
# 设置压缩率
compression_ratio = 0.1
# 计算DCT系数
imF = dct2(im)
# 对DCT系数进行阈值处理
imF_thresh = imF * (np.abs(imF) > (compression_ratio*np.max(imF)))
# 对处理后的DCT系数进行IDCT反变换
im2 = idct2(imF_thresh)
# 显示处理前后的图像
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10, 5))
ax = axes.ravel()
ax[0].imshow(im, cmap=plt.cm.gray)
ax[0].set_title('Original image')
ax[1].imshow(im2, cmap=plt.cm.gray)
ax[1].set_title('Compressed image (DCT+IDCT)')
for a in ax:
a.axis('off')
plt.show()
```
在这个例子中,我们添加了一个名为`compression_ratio`的变量,来控制压缩率。您可以根据需要修改这个变量的值来调整压缩率。在代码中,我们将阈值设置为最大DCT系数的10% (`compression_ratio = 0.1`),这将使图像的大小减小到原来的10%。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)