pythpn实现bgr颜色通道分离,并分别显示一副彩色图片的BGR通道图片

分别显示一副彩色图片的B,G,R通道图片

要实现这个功能,原理很简单。

一张彩图有三个颜色通道显示哪个就将另外两个通道置0

代码

import cv2 as cv
img = cv.imread('img2.png', cv.IMREAD_REDUCED_COLOR_2)


# 定义一个函数,实现显示B通道图像
def img_B():
    img_b, img_g, img_r = cv.split(img)  # 拆分颜色通道 (1)
    img_g[:, :] = 0  # 将G通道置0
    img_r[:, :] = 0  # 将R通道置0
    img_B = cv.merge([img_b, img_g, img_r])  # 按bgr合并通道s
    cv.imshow('imgB', img_B)  # 显示图片
    return img_B


# 定义一个函数,实现显示G通道图像
def img_G():
    img_b, img_g, img_r = cv.split(img)  # 拆分颜色通道 (1)
    img_b[:, :] = 0
    img_r[:, :] = 0
    img_G = cv.merge([img_b, img_g, img_r])  # 按bgr合并通道
    cv.imshow('imgG', img_G)  # 显示图片
    return img_G


# 定义一个函数,实现显示R通道图像
def img_R():
    img_b, img_g, img_r = cv.split(img)  # 拆分颜色通道 (1)
    img_b[:, :] = 0
    img_g[:, :] = 0
    img_R = cv.merge([img_b, img_g, img_r])  # 按bgr合并通道
    cv.imshow('imgR', img_R)  # 显示图片
    return img_R


cv.imshow('img', img)
img_B = img_B()
img_G = img_G()
img_R = img_R()

cv.waitKey(0)
cv.destroyAllWindows()

# (1):若单独把这行代码放到全局中,可理解为全局变量,三个函数会共用一份数据
# 代码放在函数中变为局部变量,拆分三次原图颜色通道,数据互不干扰

效果图

2.0代码

# 分别显示一副彩色图像的B,G,R通道图像
import copy
import cv2 as cv
 
path = 'img.png'  # 图片的路径
img = cv.imread(path, cv.IMREAD_REDUCED_COLOR_2)  # 读取图片并将其缩小为原来的1/2
 
# 调用python中的深拷贝函数,复制三份图片
img_b = copy.deepcopy(img)
img_g = copy.deepcopy(img)
img_r = copy.deepcopy(img)
 
# 将img_b的g,r通道置0,得到b通道图片
img_b[:, :, 1] = 0
img_b[:, :, 2] = 0
 
# 将img_g的b,r通道置0,得到g通道图片
img_g[:, :, 0] = 0
img_g[:, :, 2] = 0
 
 
# 定义成函数,将img_r的b,g通道置0,得到r通道图片
def R(img_r):
    img_r[:, :, 0] = 0
    img_r[:, :, 1] = 0
    return img_r
 
# 显示图片
cv.imshow('img', img)
cv.imshow('B', img_b)
cv.imshow('G', img_g)
cv.imshow('R', R(img_r))
 
cv.waitKey(0)  # 等待按键输入,返回按键的ASCII值。0表示任意按键;其他整数表示时间,单位毫秒
cv.destroyAllWindows()  # 销毁所有窗口

效果图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值