opencv python psnr 示例
时间: 2023-07-04 07:30:44 浏览: 52
下面是一个简单的Python示例,演示如何使用OpenCV计算图像之间的峰值信噪比(PSNR)。
```python
import cv2
import numpy as np
def calculate_psnr(img1, img2):
# 计算峰值信噪比
mse = np.mean((img1 - img2) ** 2)
if mse == 0:
return float('inf')
max_pixel = 255.0
psnr = 20 * np.log10(max_pixel / np.sqrt(mse))
return psnr
# 读取原始图像和降噪后的图像
img1 = cv2.imread('original_image.jpg')
img2 = cv2.imread('denoised_image.jpg')
# 计算峰值信噪比
psnr = calculate_psnr(img1, img2)
# 打印结果
print('PSNR:', psnr)
```
在这个示例中,我们首先定义了一个`calculate_psnr()`函数,该函数采用两个图像作为输入,并计算它们之间的峰值信噪比。然后,我们读取原始图像和降噪后的图像,并使用`calculate_psnr()`函数计算它们之间的峰值信噪比。最后,我们将峰值信噪比打印到屏幕上。
请注意,这个示例假设原始图像和降噪后的图像的像素值范围为0到255。如果图像的像素值范围不同,需要根据实际情况进行调整。
相关问题
python计算psnr
PSNR(Peak Signal-to-Noise Ratio)是一种衡量图像或视频质量的指标,它可以用来评估原始图像与经过压缩或处理后的图像之间的相似程度。在Python中,可以使用以下代码计算PSNR:
```python
import cv2
import numpy as np
def compute_psnr(original_img, compressed_img):
# 读取图像
img1 = cv2.imread(original_img)
img2 = cv2.imread(compressed_img)
# 将图像转换为浮点数
img1 = img1.astype(np.float64)
img2 = img2.astype(np.float64)
# 计算MSE(均方误差)
mse = np.mean((img1 - img2) ** 2)
# 计算PSNR
if mse == 0:
return "Infinite"
else:
max_pixel = 255.0
psnr = 20 * np.log10(max_pixel / np.sqrt(mse))
return psnr
# 示例用法
psnr = compute_psnr("original.jpg", "compressed.jpg")
print("PSNR:", psnr)
```
请将`original_img`和`compressed_img`分别替换为原始图像和经过处理后的图像的文件路径。这段代码使用OpenCV库来读取图像,并利用NumPy库进行数值计算。最后,通过计算MSE和使用PSNR公式计算得出结果。
PSNR PYTHON
PSNR(Peak Signal-to-Noise Ratio)是一种用于衡量图像或视频质量的指标,它可以用来评估原始图像与压缩或失真后的图像之间的差异程度。在Python中,可以使用OpenCV库来计算PSNR。
以下是使用Python计算PSNR的示例代码:
```python
import cv2
import numpy as np
def calculate_psnr(original_image, compressed_image):
# 读取原始图像和压缩图像
img1 = cv2.imread(original_image)
img2 = cv2.imread(compressed_image)
# 将图像转换为灰度图像
gray_img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
gray_img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
# 计算MSE(Mean Squared Error)
mse = np.mean((gray_img1 - gray_img2) ** 2)
# 计算PSNR(Peak Signal-to-Noise Ratio)
psnr = 10 * np.log10((255 ** 2) / mse)
return psnr
# 示例用法
original_image = "path/to/original_image.jpg"
compressed_image = "path/to/compressed_image.jpg"
psnr_value = calculate_psnr(original_image, compressed_image)
print("PSNR:", psnr_value)
```
请注意,上述示例代码中的`original_image`和`compressed_image`需要替换为实际的图像文件路径。