修复误删文件
This commit is contained in:
@@ -8,6 +8,7 @@ import ttkbootstrap as ttk
|
||||
|
||||
import algorithm.pq_algorithm as pq_algorithm
|
||||
|
||||
|
||||
def create_cct_params_frame(self):
|
||||
"""创建色度参数设置区域 - 屏模组、SDR、HDR 独立(✅ 增加色域参考标准选择 + 单步调试按钮)"""
|
||||
|
||||
@@ -558,8 +559,6 @@ def recalculate_cct(self):
|
||||
self.log_gui.log("开始重新计算色度一致性...")
|
||||
self.log_gui.log("=" * 50)
|
||||
|
||||
import algorithm.pq_algorithm as pq_algorithm
|
||||
|
||||
cct_values = pq_algorithm.calculate_cct_from_results(gray_data)
|
||||
|
||||
# 7. 更新结果
|
||||
@@ -576,8 +575,6 @@ def recalculate_cct(self):
|
||||
|
||||
except Exception as e:
|
||||
self.log_gui.log(f"❌ 重新计算失败: {str(e)}")
|
||||
import traceback
|
||||
|
||||
self.log_gui.log(traceback.format_exc())
|
||||
messagebox.showerror("错误", f"重新计算失败: {str(e)}")
|
||||
|
||||
@@ -633,7 +630,6 @@ def recalculate_gamut(self):
|
||||
# 7. 重新计算 XY 色域覆盖率
|
||||
xy_points = [[result[0], result[1]] for result in rgb_data]
|
||||
|
||||
# 根据参考标准计算 XY 覆盖率
|
||||
if reference_standard == "BT.2020":
|
||||
area_xy, coverage_xy = pq_algorithm.calculate_gamut_coverage_BT2020(
|
||||
xy_points
|
||||
@@ -655,12 +651,10 @@ def recalculate_gamut(self):
|
||||
self.log_gui.log(f"✓ 参考标准: {reference_standard}")
|
||||
self.log_gui.log(f"✓ XY 色域覆盖率: {coverage_xy:.1f}%")
|
||||
|
||||
# ========== ✅✅✅ 8. 重新计算 UV 色域覆盖率 ==========
|
||||
# 将 XY 坐标转换为 UV 坐标
|
||||
# 8. 重新计算 UV 色域覆盖率
|
||||
uv_points = []
|
||||
for x, y in xy_points:
|
||||
try:
|
||||
# XY转UV公式
|
||||
denom = -2 * x + 12 * y + 3
|
||||
if abs(denom) < 1e-10:
|
||||
u, v = 0, 0
|
||||
@@ -673,7 +667,6 @@ def recalculate_gamut(self):
|
||||
|
||||
self.log_gui.log(f"✓ 转换后的 UV 点数量: {len(uv_points)}")
|
||||
|
||||
# 根据参考标准计算 UV 覆盖率
|
||||
if reference_standard == "BT.2020":
|
||||
area_uv, coverage_uv = pq_algorithm.calculate_gamut_coverage_BT2020_uv(
|
||||
uv_points
|
||||
@@ -692,19 +685,18 @@ def recalculate_gamut(self):
|
||||
)
|
||||
|
||||
self.log_gui.log(f"✓ UV 色域覆盖率: {coverage_uv:.1f}%")
|
||||
# ========================================================
|
||||
|
||||
# 9. ✅ 更新结果(同时保存 XY 和 UV 覆盖率)
|
||||
# 9. 更新结果
|
||||
self.results.set_test_item_result(
|
||||
"gamut",
|
||||
{
|
||||
"area": area_xy, # ← 兼容旧字段
|
||||
"coverage": coverage_xy, # ← 兼容旧字段
|
||||
"area_xy": area_xy, # ← XY 面积
|
||||
"coverage_xy": coverage_xy, # ← XY 覆盖率
|
||||
"area_uv": area_uv, # ← UV 面积
|
||||
"coverage_uv": coverage_uv, # ← UV 覆盖率
|
||||
"uv_coverage": coverage_uv, # ← 兼容字段(Excel 导出用)
|
||||
"area": area_xy,
|
||||
"coverage": coverage_xy,
|
||||
"area_xy": area_xy,
|
||||
"coverage_xy": coverage_xy,
|
||||
"area_uv": area_uv,
|
||||
"coverage_uv": coverage_uv,
|
||||
"uv_coverage": coverage_uv,
|
||||
"reference": reference_standard,
|
||||
},
|
||||
)
|
||||
@@ -726,8 +718,6 @@ def recalculate_gamut(self):
|
||||
|
||||
except Exception as e:
|
||||
self.log_gui.log(f"❌ 重新计算失败: {str(e)}")
|
||||
import traceback
|
||||
|
||||
self.log_gui.log(traceback.format_exc())
|
||||
messagebox.showerror("错误", f"重新计算失败: {str(e)}")
|
||||
|
||||
@@ -738,12 +728,10 @@ def on_cct_param_change(self, var, default_value):
|
||||
value = var.get().strip()
|
||||
|
||||
if value == "":
|
||||
# 空值:恢复默认值
|
||||
var.set(str(default_value))
|
||||
if hasattr(self, "log_gui"):
|
||||
self.log_gui.log(f"输入框为空,恢复默认值: {default_value}")
|
||||
else:
|
||||
# 验证是否为有效数字
|
||||
try:
|
||||
float_val = float(value)
|
||||
if float_val < 0 or float_val > 1:
|
||||
@@ -757,7 +745,6 @@ def on_cct_param_change(self, var, default_value):
|
||||
if hasattr(self, "log_gui"):
|
||||
self.log_gui.log(f"无效的参数值,恢复默认值: {default_value}")
|
||||
|
||||
# 保存配置
|
||||
self.save_cct_params()
|
||||
|
||||
except Exception as e:
|
||||
@@ -771,12 +758,10 @@ def on_cct_param_focus_out(self, var, default_value):
|
||||
value = var.get().strip()
|
||||
|
||||
if value == "":
|
||||
# 空值:恢复默认值
|
||||
var.set(str(default_value))
|
||||
if hasattr(self, "log_gui"):
|
||||
self.log_gui.log(f"✓ 输入框为空,恢复默认值: {default_value}")
|
||||
else:
|
||||
# 验证是否为有效数字
|
||||
try:
|
||||
float_val = float(value)
|
||||
if float_val < 0 or float_val > 1:
|
||||
@@ -790,7 +775,6 @@ def on_cct_param_focus_out(self, var, default_value):
|
||||
if hasattr(self, "log_gui"):
|
||||
self.log_gui.log(f"⚠️ 无效的参数值,恢复默认值: {default_value}")
|
||||
|
||||
# 保存配置
|
||||
self.save_cct_params()
|
||||
|
||||
except Exception as e:
|
||||
@@ -857,45 +841,3 @@ def reload_cct_params(self):
|
||||
except Exception as e:
|
||||
if hasattr(self, "log_gui"):
|
||||
self.log_gui.log(f"重新加载色度参数失败: {str(e)}")
|
||||
|
||||
|
||||
def toggle_cct_params_frame(self):
|
||||
"""根据测试类型和测试项的选中状态显示对应参数框"""
|
||||
selected_items = self.get_selected_test_items()
|
||||
current_test_type = self.config.current_test_type
|
||||
|
||||
# ========== 默认隐藏所有参数框 ==========
|
||||
self.cct_params_frame.pack_forget()
|
||||
self.sdr_cct_params_frame.pack_forget()
|
||||
|
||||
# HDR 色度参数框(如果存在的话)
|
||||
if hasattr(self, "hdr_cct_params_frame"):
|
||||
self.hdr_cct_params_frame.pack_forget()
|
||||
|
||||
# ========== 根据测试类型和选中项显示对应参数框 ==========
|
||||
if current_test_type == "screen_module":
|
||||
# 屏模组:只有色度参数
|
||||
if "cct" in selected_items:
|
||||
self.cct_params_frame.pack(fill=tk.X, padx=5, pady=5)
|
||||
if hasattr(self, "log_gui"):
|
||||
self.log_gui.log("✓ 显示屏模组色度参数设置")
|
||||
|
||||
elif current_test_type == "sdr_movie":
|
||||
# SDR:只有色度参数(色准不需要参数设置框)
|
||||
if "cct" in selected_items:
|
||||
self.sdr_cct_params_frame.pack(fill=tk.X, padx=5, pady=5)
|
||||
if hasattr(self, "log_gui"):
|
||||
self.log_gui.log("✓ 显示 SDR 色度参数设置")
|
||||
|
||||
elif current_test_type == "hdr_movie":
|
||||
# HDR:只有色度参数(色准不需要参数设置框)
|
||||
if "cct" in selected_items:
|
||||
if hasattr(self, "hdr_cct_params_frame"):
|
||||
self.hdr_cct_params_frame.pack(fill=tk.X, padx=5, pady=5)
|
||||
if hasattr(self, "log_gui"):
|
||||
self.log_gui.log("✓ 显示 HDR 色度参数设置")
|
||||
else:
|
||||
if hasattr(self, "log_gui"):
|
||||
self.log_gui.log("⚠️ HDR 色度参数框尚未创建")
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user