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

Python OpenCV实现逐通道显示图像及对应像素值的代码方案

逐通道像素值展示效果图

Python+OpenCV 逐通道像素值展示实现

以下代码完全基于OpenCV实现,可拆分图像BGR三个通道,以网格形式展示每个像素位置的数值,效果和参考图一致。

完整代码

import cv2
import numpy as np

def show_channel_pixel_values(img, cell_size=40):
    """
    逐通道展示图像像素值
    :param img: 输入三通道BGR格式图像(OpenCV默认读取格式)
    :param cell_size: 单个像素对应的展示格子边长,单位:像素
    """
    h, w = img.shape[:2]
    # 拆分BGR三通道
    b_channel, g_channel, r_channel = cv2.split(img)
    channel_list = [
        ("Blue Channel", b_channel),
        ("Green Channel", g_channel),
        ("Red Channel", r_channel)
    ]
    show_canvases = []

    def draw_channel(channel_data, title):
        # 创建单通道展示画布,白色背景,顶部预留标题区域
        canvas_h = h * cell_size + 60
        canvas_w = w * cell_size
        canvas = np.ones((canvas_h, canvas_w, 3), dtype=np.uint8) * 255
        # 绘制通道标题
        cv2.putText(canvas, title, (10, 40), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0,0,0), 2)
        # 遍历绘制网格与像素值
        for i in range(h):
            for j in range(w):
                val = int(channel_data[i, j])
                # 计算单个像素格子的坐标
                x1 = j * cell_size
                y1 = 60 + i * cell_size
                x2 = (j+1) * cell_size
                y2 = 60 + (i+1) * cell_size
                # 绘制格子边框
                cv2.rectangle(canvas, (x1, y1), (x2, y2), (0,0,0), 1)
                # 居中绘制像素数值
                text = str(val)
                text_size = cv2.getTextSize(text, cv2.FONT_HERSHEY_SIMPLEX, 0.5, 1)[0]
                text_x = int(x1 + (cell_size - text_size[0])/2)
                text_y = int(y1 + (cell_size + text_size[1])/2)
                cv2.putText(canvas, text, (text_x, text_y), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,0,0), 1)
        return canvas

    # 生成三个通道的单独展示图
    for channel_name, channel_data in channel_list:
        show_canvases.append(draw_channel(channel_name, channel_name))
    
    # 横向拼接三个通道的展示结果
    final_show = np.hstack(show_canvases)
    # 弹窗展示
    cv2.imshow("Pixel Values per Channel", final_show)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

# 调用示例
if __name__ == "__main__":
    # 替换为本地图像路径
    img = cv2.imread("test.png")
    # 大尺寸图像建议先缩放至合适大小,避免展示窗口超出屏幕
    # img = cv2.resize(img, (5,5))  # 小尺寸测试效果和参考图完全匹配
    show_channel_pixel_values(img, cell_size=40)

使用说明

  • 先安装依赖:执行pip install opencv-python numpy完成环境准备
  • 将代码中cv2.imread的路径替换为目标图像本地路径,初次测试建议用33、55这类小尺寸图像,效果和参考图一致
  • 可通过修改cell_size参数调整单个像素格子的显示大小,适配不同展示需求
  • 展示窗口弹出后按任意键即可关闭

内容的提问来源于stack exchange,提问作者Arjun Goud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 22:01:25