You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中制作自定义颜色映射以实现目标Coverage Count可视化

实现目标Coverage Count可视化效果

问题背景

我之前在本平台提问“coverage count”的定义,后来发现该问题更适合在信号处理平台提问并获得了正确定义,同时编写了Python代码计算coverage count。但当前使用cv2.COLORMAP_JET生成的颜色映射不符合需求,希望实现类似示例图左侧的coverage count可视化效果,现有代码如下:

non_black_pixels = np.any(piece_image != [0, 0, 0], axis=-1)
# Increment the corresponding pixels in the coverage_count
coverage_count[non_black_pixels] += 1
# Normalize the coverage_count matrix to the full 8-bit grayscale range (0-255)
normalized_coverage_count = cv2.normalize(coverage_count, None, 0, 255, cv2.NORM_MINMAX, dtype=cv2.CV_8U)
# Apply a colormap to the normalized grayscale image
colorful_coverage_count = cv2.applyColorMap(normalized_coverage_count, cv2.COLORMAP_JET)
# Display the colorful coverage_count image
cv2.imshow("Colorful Coverage Count", colorful_coverage_count)
cv2.waitKey(0)
cv2.destroyAllWindows()

解决方案

方法1:使用OpenCV内置替代颜色映射

如果目标效果是低计数用冷色调(蓝/绿)、高计数用暖色调(黄/红)的柔和渐变,可以尝试OpenCV提供的其他内置颜色映射,比如:

  • cv2.COLORMAP_VIRIDIS:从深蓝到亮黄的自然渐变,视觉区分度好且柔和
  • cv2.COLORMAP_PLASMA:从深蓝到亮粉的渐变
  • cv2.COLORMAP_INFERNO:从黑到亮黄红的渐变

只需替换代码中的cv2.COLORMAP_JET为上述任意一种即可,示例:

colorful_coverage_count = cv2.applyColorMap(normalized_coverage_count, cv2.COLORMAP_VIRIDIS)

方法2:自定义颜色映射

如果内置映射不符合需求,可以手动创建自定义颜色渐变。比如构建从蓝色→绿色→黄色→红色的平滑过渡:

  1. 定义颜色节点(遵循OpenCV的BGR通道顺序):
# 关键颜色节点:蓝→绿→黄→红(BGR格式)
color_nodes = np.array([
    [255, 0, 0],    # 蓝色
    [0, 255, 0],    # 绿色
    [0, 255, 255],  # 黄色
    [0, 0, 255]     # 红色
], dtype=np.uint8)
  1. 生成完整的256色颜色映射数组:
colormap = np.zeros((256, 1, 3), dtype=np.uint8)
# 拆分颜色节点的渐变区间
segments = np.linspace(0, 255, len(color_nodes)).astype(int)

for i in range(len(color_nodes)-1):
    start_idx = segments[i]
    end_idx = segments[i+1]
    # 计算两段颜色间的渐变过渡
    for j in range(start_idx, end_idx):
        ratio = (j - start_idx) / (end_idx - start_idx)
        colormap[j] = (color_nodes[i] * (1 - ratio) + color_nodes[i+1] * ratio).astype(np.uint8)
# 补全最后一个颜色节点
colormap[segments[-1]] = color_nodes[-1]
  1. 应用自定义颜色映射:
colorful_coverage_count = cv2.applyColorMap(normalized_coverage_count, colormap)

注意事项

  • OpenCV默认使用BGR通道顺序,自定义颜色时需遵循该规则,不要用RGB顺序
  • 如果需要和示例图完全匹配,可以提取示例图的关键颜色节点,替换到自定义映射的color_nodes中

内容的提问来源于stack exchange,提问作者Straw User

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:33:22