openCV中图像的存储方式

opencv中灰度图实际在理论内存中的布局,如下图

image-20220927091813872

​ 其中的每个小格子就是一个图像中的像素值。0-255

opencv中彩色图实际在理论内存中的布局,如下图

image-20220927092018631

img = cv2.imread('xxx.jpg')
print(img.shape)

输出的图像 shape 为 H * W * 3,即 高度 * 宽度 * 3通道 或者 行数 * 列数 * 3通道

图像的 shape 为 (1080, 1920, 3),第一维 1080 表示有 1080 行,所以有 1080 个小的二维矩阵,每个二维矩阵是三通道图像中的一行

image-20220927095351679

在的每一个小矩阵中,有 1920 行,每一行有 3 列,每一行的三个像素值就对应当前位置的 B G R 三个通道.

image-20220927100251216
如何读取彩色图像的每个通道的值呢?
可以使用表达式访问数组内的值。例如,可以使用 image[0,0,0]访问图像 image 的 B 通道
内的第 0 行第 0 列上的像素点,式中:
第 1 个索引表示第 0 行
第 2 个索引表示第 0 列
第 3 个索引表示第 0 个颜色通道

根据上述分析可知,假设有一个红色(其 R 通道值为 255,G 通道值为 0,B 通道值为 0)
图像,不同的访问方式得到的值如下。
img[0,0]:访问图像 img 第 0 行第 0 列像素点的 BGR 值。图像是 BGR 格式的,得到的
数值为[0,0,255]。
img[0,0,0]:访问图像 img 第 0 行第 0 列第 0 个通道的像素值。图像是 BGR 格式的,所
以第 0 个通道是 B 通道,会得到 B 通道内第 0 行第 0 列的位置所对应的值 0。
img[0,0,1]:访问图像 img 第 0 行第 0 列第 1 个通道的像素值。图像是 BGR 格式的,所
以第 1 个通道是 G 通道,会得到 G 通道内第 0 行第 0 列的位置所对应的值 0。
img[0,0,2]:访问图像 img 第 0 行第 0 列第 2 个通道的像素值。图像是 BGR 格式的,所
以第 2 个通道是 R 通道,会得到 R 通道内第 0 行第 0 列的位置所对应的值 255。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值