ValueError: Since image dtype is floating point, you must specify the data_range parameter. Please read the documentation carefully (including the note). It is recommended that you always specify the data_range anyway.
时间: 2024-02-18 12:06:07 浏览: 566
这个错误通常出现在你使用`skimage.metrics.structural_similarity`函数时,如果你的图像数据类型是浮点型,那么你必须指定`data_range`参数。
`data_range`参数指定了输入图像数据的范围,它通常是一个浮点值,它告诉函数输入图像数据的最小值和最大值,以便于函数计算正确的相似度。由于浮点数数据的值域是连续的,因此需要指定一个范围来计算相似度。
你需要将你的代码修改为以下形式:
```
from skimage import io, img_as_float
from skimage.metrics import structural_similarity as ssim
# 读取原始图像和压缩后的图像
img_original = img_as_float(io.imread('00.jpg', as_gray=True))
img_compressed = img_as_float(io.imread('03_resized.jpg', as_gray=True))
# 计算 SSIM 值,指定 data_range 参数
ssim_value = ssim(img_original, img_compressed, multichannel=False, data_range=img_original.max() - img_original.min())
print('SSIM:', ssim_value)
```
在这个代码中,我们在调用`skimage.metrics.structural_similarity`函数时,指定了`data_range`参数。这个参数的值是原始图像的像素值范围(最大值减去最小值)。这样,函数就能够正确地计算相似度了。
希望这可以帮助你解决问题!
阅读全文