起因:

  大家都知道的,在OpenCV中,图像都是按 BGR颜色通道顺序 来进行处理的。在自学OpenCV的过程中,我对 拆分和合并颜色通道 起了兴趣。自己写了一些代码来验证自己的思路。

实验思路:

  1. 分别将三个通道的矩阵数值取出;
  2. 保留单色通道,其他通道全部置0,以显示 单色 图片的效果;
  3. 保留双色通道,剩余一个通道置0,以显示 混合双色 图片的效果;
  4. 保留全部三个颜色通道,重新编排颜色通道顺序,以显示不同 颜色通道顺序 对应图片的效果。

Demo:

原始图像

(girl.jpg):

单色图片

保留 blue 通道,其他通道全部置0(b_pic.jpg):

保留 green 通道,其他通道全部置0(g_pic.jpg):

保留 red 通道,其他通道全部置0(r_pic.jpg):

双色混合图片

green、red通道混合,其他通道全部置0(gr_pic.jpg):

blue、red通道混合,其他通道全部置0(br_pic.jpg):

blue、green通道混合,其他通道全部置0(bg_pic.jpg):

三通道全混合

存为 RGB 通道顺序的 图片(rgb_pic.jpg):

存为 BGR 通道顺序的 图片(bgr_pic.jpg):


附上自己写的实验代码:

    # -*- coding: utf-8 -*-import cv2import numpy as nppic = cv2.imread('../pic/girl.jpg')b, g, r = cv2.split(pic)### 单色图片# 保留 blue 通道,其他通道全部置0b_pic = np.zeros((424, 600, 3), np.uint8)b_pic[:, :, 0] = bcv2.imshow('b_pic', b_pic)cv2.imwrite('../pic/b_pic.jpg', b_pic)cv2.waitKey(2000)cv2.destroyAllWindows()# 保留 green 通道,其他通道全部置0g_pic = np.zeros((424, 600, 3), np.uint8)g_pic[:, :, 1] = gcv2.imshow('g_pic', g_pic)cv2.imwrite('../pic/g_pic.jpg', g_pic)cv2.waitKey(2000)cv2.destroyAllWindows()# 保留 red 通道,其他通道全部置0r_pic = np.zeros((424, 600, 3), np.uint8)r_pic[:, :, 2] = rcv2.imshow('r_pic', r_pic)cv2.imwrite('../pic/r_pic.jpg', r_pic)cv2.waitKey(2000)cv2.destroyAllWindows()### 双色混合图片# green、red通道混合,其他通道全部置0gr_pic = cv2.imread('../pic/girl.jpg')gr_pic[:, :, 0] = 0cv2.imshow('gr_pic', gr_pic)cv2.imwrite('../pic/gr_pic.jpg', gr_pic)cv2.waitKey(2000)cv2.destroyAllWindows()# blue、red通道混合,其他通道全部置0br_pic = cv2.imread('../pic/girl.jpg')br_pic[:, :, 1] = 0cv2.imshow('br_pic', br_pic)cv2.imwrite('../pic/br_pic.jpg', br_pic)cv2.waitKey(2000)cv2.destroyAllWindows()# blue、green通道混合,其他通道全部置0bg_pic = cv2.imread('../pic/girl.jpg')bg_pic[:, :, 2] = 0cv2.imshow('bg_pic', bg_pic)cv2.imwrite('../pic/bg_pic.jpg', bg_pic)cv2.waitKey(2000)cv2.destroyAllWindows()### 三通道全混合# 存为 RGB 通道顺序的 图片rgb_pic = np.zeros((424, 600, 3), np.uint8)rgb_pic[:, :, 0] = rrgb_pic[:, :, 1] = grgb_pic[:, :, 2] = bcv2.imshow('rgb_pic', rgb_pic)cv2.imwrite('../pic/rgb_pic.jpg', rgb_pic)cv2.waitKey(2000)cv2.destroyAllWindows()# 存为 BGR 通道顺序的 图片bgr_pic = np.zeros((424, 600, 3), np.uint8)bgr_pic[:, :, 0] = bbgr_pic[:, :, 1] = gbgr_pic[:, :, 2] = rcv2.imshow('bgr_pic', bgr_pic)cv2.imwrite('../pic/bgr_pic.jpg', bgr_pic)cv2.waitKey(2000)cv2.destroyAllWindows()


opencv: 颜色通道 探究(图示+源码)相关推荐

  1. opencv: 颜色空间转换(cv2.cvtColor) 探究(图示+源码)

    API Definition 我们从 OpenCV官网 的Miscellaneous Image Transformations 上,可查到 cv2.cvtColor 这个api的定义如下: cvtC ...

  2. 为什么想要去探究Mybatis源码?(1)

    为什么想要去探究Mybatis源码?(1) 关于Mybatis源码探究的专栏. 其我的专业是软件技术这个方向的,mybatis 许久以前就学了,但是心里一直存在一些疑惑.也上网查了,看过各种大佬的博客 ...

  3. HTML在线颜色代码选取器源码

    简介: HTML在线颜色代码选取器源码 前端设计工具HTML在线颜色代码选取器源码,一共19种颜色不同灰度选取,鼠标点击即可实现复制颜色代码,可本地使用也可上传在线当小工具使用! 网盘下载地址: ht ...

  4. Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]

    1.图片演示 2.视频演示 [项目分享]Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]_哔哩哔哩_bilibili 3.检测方法 1)方法 与用于计算眨眼的传统 ...

  5. 基于tensorflow2.0+opencv的花卉识别系统源码(含数据集)

    花卉识别-基于tensorflow2.3实现 完整代码下载地址:基于tensorflow2.0+opencv的花卉识别系统源码( 文件目录 # 数据下载地址 https://storage.googl ...

  6. Halcon转OpenCV实例--去除纸张中的颜色笔迹/墨迹(附源码)

    导读 本文主要介绍一个去除纸张中颜色笔迹/墨迹的实例,并将Halcon实现转为OpenCV. 实例来源 实例来源于51Halcon论坛的讨论贴: https://www.51halcon.com/fo ...

  7. OpenCV转换HDR图像与源码分析

    我们常见的图像位深一般是8bit,颜色范围[0, 255],称为标准动态范围SDR(Standard Dynamic Range).SDR的颜色值有限,如果要图像色彩更鲜艳,那么就需要10bit,甚至 ...

  8. 超简单的pyTorch训练-onnx模型-C++ OpenCV DNN推理(附源码地址)

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为1974字,预计阅读5分钟 前言 很早就想学习深度学习了,因为平时都是自学,业余时间也有限,看过几个pyTorch的入门,都是一 ...

  9. 手把手教你使用LabVIEW人工智能视觉工具包快速实现传统Opencv算子的调用(含源码)

    文章目录 前言 一.图像滤波与增强 二.图像灰度处理 三.阈值处理与设定 四.二值化处理 五.边缘提取 六.角点检测 1.使用cornerMinEigenVal算子 2.使用cornerHarris算 ...

  10. OpenCV人脸识别LBPH算法源码分析

    1 背景及理论基础 人脸识别是指将一个需要识别的人脸和人脸库中的某个人脸对应起来(类似于指纹识别),目的是完成识别功能,该术语需要和人脸检测进行区分,人脸检测是在一张图片中把人脸定位出来,完成的是搜寻 ...

最新文章

  1. 22条 API 设计规范,API 一致性设计
  2. 被称为“C#圣经”的权威著作!
  3. Python实例介绍正则化贪心森林算法(附代码)
  4. 线程的状态:分离(detached)和joinable(可结合的)
  5. list循环赋值_Python之 for循环
  6. [转载] python set()集合快速比较两个列表内的元素是否一致
  7. 什么是思考?如何主动思考?
  8. 省钱兄(APP、h5版本)任务悬赏点赞平台uniapp前端源码模板
  9. pearson 相关系数可视化
  10. PHP在线考试系统源码 在线答题 在线批改
  11. 如何利用PS制作炫酷背景图
  12. Kubernetes 安全容器技术 kata gvisor
  13. 【工具】NavicatSQLDBXMysql WorkBench
  14. nyoj 239 月老的难题 【二分匹配之匈牙利】
  15. python验证账号密码登录
  16. 增加购物车商品数量【项目 商城】
  17. JSP实用教程——第二章:JSP语法
  18. SM4加密算法原理和简单实现(java)
  19. C++程序员发展方向有哪些?
  20. 《应用回归分析》何晓群 最新版数据下载

热门文章

  1. 汉语拼音字母n和l、in和ing的发音有什么区别?
  2. c语言中1 2 3怎么运算符号,C语言运算符和表达式(一)
  3. 博途IEC TIME数据类型_基于博途V15 西门子S7-1200数据处理指令应用-移动操作
  4. 计算机打印机出现副本1,打印机提示Administrator的1个文档被挂起
  5. linux磁盘写保护怎么修改_磁盘被写保护怎么办_磁盘被写保护的解决方法 - 驱动管家...
  6. [].push.apply(a, b)是什么意思
  7. html5离散数学,离散数学怎样判断合取范式和析取范式
  8. python中的反三角函数_用公式计算反三角函数
  9. Linux学习之安装配置VM虚拟机
  10. 鸿雪因缘--穿越千年的朋友圈