如何理解基于Numpy拆分图像RGB通道的代码逻辑?
用大白话讲明白OpenCV拆分RGB通道的代码逻辑
先给您打个比方:OpenCV里的彩色图像,就像一本画满了极小彩色格子的画册——每个小格子(我们叫它「像素」)里都装着三个小颜料罐,分别是蓝色、绿色、红色(注意哦,这里顺序是蓝、绿、红,不是平时说的红、绿、蓝)。这三种颜料按不同多少混合,就调出了我们看到的各种颜色。
下面逐段给您解释代码:
提取红色调图像的代码
r = img.copy() r[:,:,0] = r[:,:,1] = 0
- 第一行
r = img.copy():把整本彩色画册完完整整复印了一份,这份复印件叫r,和原画册长得一模一样。这么做是为了不弄坏原画册,以后还能接着用。 - 第二行
r[:,:,0] = r[:,:,1] = 0:0就代表把颜料罐彻底清空(没颜料的地方就是黑色)。[:,:,0]是说把复印件里所有小格子的蓝色颜料罐都清空;[:,:,1]是把所有小格子的绿色颜料罐都清空。这下每个小格子里就只剩红色颜料了,所以这份复印件看起来就是全红色调的图像。
提取绿色调图像的代码
g = img.copy() g[:,:,0] = g[:,:,2] = 0
- 第一行同样是复印原画册,得到新的复印件
g。 - 第二行是把所有小格子的蓝色颜料罐(第0个)和红色颜料罐(第2个)都清空,每个小格子就只剩绿色颜料,所以
g就是全绿色调的图像。
提取蓝色调图像的代码
b = img.copy() b[:,:,1] = b[:,:,2] = 0
- 第一行复印原画册得到复印件
b。 - 第二行把所有小格子的绿色颜料罐(第1个)和红色颜料罐(第2个)都清空,每个小格子就只剩蓝色颜料,所以
b就是全蓝色调的图像。
简单说就是:复印原图像,然后把不需要的两种颜色的颜料罐全清空,剩下的那种颜色就单独显示出来啦。
内容的提问来源于stack exchange,提问作者MountainMan
相关产品推荐
相关产品推荐

