python
复制代码
# -*- coding: utf-8 -*-
# created by 码流怪侠
# 2025.4.15
import matplotlib.pyplot as plt
# 提取前50帧的psnr_avg数据
# VBR
psnr_values_vbr = [
41.90, 40.17, 40.18, 39.88, 40.13, 39.68, 39.84, 39.64, 39.71, 40.31,
39.78, 39.92, 39.80, 40.14, 39.87, 40.01, 39.85, 39.94, 40.35, 40.32,
40.39, 40.68, 40.38, 40.39, 40.97, 40.32, 40.23, 40.59, 40.11, 40.34,
40.23, 40.69, 39.88, 39.86, 39.61, 39.84, 39.45, 39.54, 39.42, 39.93,
39.33, 39.34, 39.13, 39.41, 38.96, 39.08, 38.99, 40.16, 38.93, 38.96
]
# CBR
psnr_values_cbr = [
43.03, 38.69, 38.39, 38.16, 37.95, 38.08, 38.23, 38.41, 38.68, 38.89,
39.16, 39.35, 39.54, 39.77, 39.88, 39.95, 39.96, 40.03, 40.03, 40.06,
40.06, 40.04, 39.99, 39.96, 39.90, 39.80, 39.69, 39.56, 39.45, 39.36,
39.40, 34.18, 39.36, 38.54, 38.79, 38.80, 38.76, 38.70, 38.64, 38.62,
38.63, 38.55, 38.50, 38.32, 38.18, 38.01, 37.84, 37.73, 37.71, 37.72
]
# CQ
psnr_values_cq = [
41.90, 40.17, 40.18, 39.89, 40.15, 39.71, 39.84, 39.64, 39.74, 40.38,
39.83, 39.97, 39.85, 40.19, 39.92, 40.05, 39.92, 39.99, 40.43, 40.36,
40.40, 40.74, 40.41, 40.43, 41.04, 40.37, 40.27, 40.66, 40.16, 40.38,
40.30, 40.85, 39.95, 39.91, 39.65, 39.88, 39.47, 39.58, 39.43, 39.98,
39.36, 39.37, 39.15, 39.46, 38.98, 39.11, 39.00, 40.24, 38.95, 38.99
]
# Q
psnr_values_q = [
41.52, 42.63, 43.32, 42.58, 44.10, 42.57, 43.37, 42.77, 42.57, 44.15,
42.54, 43.35, 42.55, 44.11, 42.58, 43.36, 42.80, 42.79, 42.65, 42.65,
42.55, 43.88, 42.60, 42.54, 44.19, 42.60, 42.56, 42.58, 43.38, 42.30,
42.56, 42.79, 42.85, 42.56, 43.44, 42.57, 42.55, 42.53, 42.66, 42.58,
42.54, 42.86, 42.56, 43.50, 42.58, 42.46, 42.62, 44.46, 42.66, 43.01
]
# 创建图表
plt.figure(figsize=(12, 6))
plt.plot(psnr_values_vbr, marker='o', linestyle='-', color='b', label='VBR', alpha=0.7)
plt.plot(psnr_values_cbr, marker='s', linestyle='--', color='r', label='CBR', alpha=0.7)
plt.plot(psnr_values_cq, marker='^', linestyle=':', color='g', label='CQ', alpha=0.7)
plt.plot(psnr_values_q, marker='D', linestyle='-.', color='m', label='Q', alpha=0.7) # 新增Q曲线
plt.title('PSNR Comparison (VBR vs CBR vs CQ vs Q) for First 50 Frames') # 更新标题
plt.xlabel('Frame Number')
plt.ylabel('PSNR (dB)')
plt.grid(True)
plt.xticks(range(0, 50, 5))
plt.yticks(range(28, 46, 2)) # 调整Y轴范围
plt.ylim(28, 45) # 调整Y轴显示范围
plt.legend()
# 显示图表
plt.tight_layout()
plt.savefig('/Users/admin/Documents/gitcode/libaom/psnr_comparison.png')
plt.show()