opencv: 颜色通道 探究(图示+源码)
来源:互联网 发布:华信软件学院 编辑:程序博客网 时间:2024/06/03 17:36
起因:
大家都知道的,在OpenCV中,图像都是按 BGR 的 颜色通道顺序 来进行处理的。在自学OpenCV的过程中,我对 拆分和合并颜色通道 起了兴趣。自己写了一些代码来验证自己的思路。
实验思路:
- 分别将三个通道的矩阵数值取出;
- 保留单色通道,其他通道全部置0,以显示 单色 图片的效果;
- 保留双色通道,剩余一个通道置0,以显示 混合双色 图片的效果;
- 保留全部三个颜色通道,重新编排颜色通道顺序,以显示不同 颜色通道顺序 对应图片的效果。
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 cv2 import numpy as np pic = cv2.imread('../pic/girl.jpg') b, g, r = cv2.split(pic) ### 单色图片 # 保留 blue 通道,其他通道全部置0 b_pic = np.zeros((424, 600, 3), np.uint8) b_pic[:, :, 0] = b cv2.imshow('b_pic', b_pic) cv2.imwrite('../pic/b_pic.jpg', b_pic) cv2.waitKey(2000) cv2.destroyAllWindows() # 保留 green 通道,其他通道全部置0 g_pic = np.zeros((424, 600, 3), np.uint8) g_pic[:, :, 1] = g cv2.imshow('g_pic', g_pic) cv2.imwrite('../pic/g_pic.jpg', g_pic) cv2.waitKey(2000) cv2.destroyAllWindows() # 保留 red 通道,其他通道全部置0 r_pic = np.zeros((424, 600, 3), np.uint8) r_pic[:, :, 2] = r cv2.imshow('r_pic', r_pic) cv2.imwrite('../pic/r_pic.jpg', r_pic) cv2.waitKey(2000) cv2.destroyAllWindows() ### 双色混合图片 # green、red通道混合,其他通道全部置0 gr_pic = cv2.imread('../pic/girl.jpg') gr_pic[:, :, 0] = 0 cv2.imshow('gr_pic', gr_pic) cv2.imwrite('../pic/gr_pic.jpg', gr_pic) cv2.waitKey(2000) cv2.destroyAllWindows() # blue、red通道混合,其他通道全部置0 br_pic = cv2.imread('../pic/girl.jpg') br_pic[:, :, 1] = 0 cv2.imshow('br_pic', br_pic) cv2.imwrite('../pic/br_pic.jpg', br_pic) cv2.waitKey(2000) cv2.destroyAllWindows() # blue、green通道混合,其他通道全部置0 bg_pic = cv2.imread('../pic/girl.jpg') bg_pic[:, :, 2] = 0 cv2.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] = r rgb_pic[:, :, 1] = g rgb_pic[:, :, 2] = b cv2.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] = b bgr_pic[:, :, 1] = g bgr_pic[:, :, 2] = r cv2.imshow('bgr_pic', bgr_pic) cv2.imwrite('../pic/bgr_pic.jpg', bgr_pic) cv2.waitKey(2000) cv2.destroyAllWindows()
阅读全文
2 0
- opencv: 颜色通道 探究(图示+源码)
- opencv: 颜色空间转换(cv2.cvtColor) 探究(图示+源码)
- opencv: 阈值处理(cv2.threshold) 探究(图示+源码)
- 图像滤波器 探究(图示+源码)
- opencv: 形态学 转换(图示+源码)
- opencv 颜色三通道分离
- opencv: Canny边缘检测(图示+源码)
- opencv: 轮廓绘制 详细拆解(图示+源码)
- qt+opencv设置图片通道颜色
- 使用OpenCV分离RGB颜色通道
- OpenCV—多通道颜色分离&混合
- OpenCV-颜色通道的分离、合并
- OpenCV读代码笔记: 颜色通道过滤
- OpenCV 分离颜色通道与多通道图像混合
- OpenCV-----分离颜色通道 & 多通道图像混合
- OpenCV之五 分离颜色通道&多通道图像混合
- opencv: cv2.resize 探究(源码)
- 【OpenCV笔记 08】OpenCV中分离颜色通道split()和图像通道混合merge()
- R中时间序列分析-趋势预测ARIMA
- SQL之case when then else end用法
- vuex学习七----Modules
- Spring Cloud与分布式系统
- ART深入浅出3--了解Boot.art和boot-*.art
- opencv: 颜色通道 探究(图示+源码)
- java8 Predicate接口API翻译
- 福建省第八届程序设计大赛专题
- hive表信息查询:查看表结构、表操作、建表语句
- 计算几何算法概览
- mysql 复制一个表中数据到另一个表实现方法
- fzu2280-hash预处理
- 07-指令ng-model验证用户输入
- 2017.7.24 mdns移植到407