OpenCV(八):图像核心操作之拆分及合并图像通道

2023-10-27

摘要:

有时候我们需要对 BGR 三个通道分别进行操作,就是需要你把BGR 拆分成单个通道 B G R,这叫做拆分;

有时候又需要把独立通道的图片合并成一个 BGR 图像,这叫做合并。

拆分代码:

import cv2

import numpy as np

img = cv2.imread("tree.jpg")

b, g, r = cv2.split(img)   # 拆分

print(b)

'''
[[219 219 219 ... 205 200 203]
 [219 219 219 ... 205 200 203]
 [219 219 219 ... 206 201 204]
 ...
 [  0   7   8 ...  12   2  14]
 [  0   0   0 ...  34  14  18]
 [ 10   0   0 ...  17   0   0]]
'''

print(r)

'''
[[  9  10  10 ...   0   0   2]
 [  9  10  12 ...   0   0   2]
 [  9  10  12 ...   0   1   3]
 ...
 [ 99  81  92 ... 164 144 152]
 [119 123 117 ... 185 142 137]
 [102 104  91 ... 138 113 122]]
'''

r = 0  # 直接对通道进行赋值(注意:这是是先拆分,再赋值)


print(r)
'''
0
'''

注意:cv.split()是一个比较耗时的操作,只有真正需要的时候才用这个方法,尽量优先使用 Numpy 索引。

合并代吗:

img = cv2.imread("tree.jpg")

b, g, r = cv2.split(img)   # 拆分

img=cv2.merge([b,g,r])     # 合并

print(img)

# # 或者
# b = img[:, :, 0]
# print(img)

'''
[[[219 123   9]
  [219 123  10]
  [219 123  10]
  ...
  [205 105   0]
  [200 102   0]
  [203 106   2]]

 [[219 123   9]
  [219 123  10]
  [219 122  12]
  ...
  [205 105   0]
  [200 102   0]
  [203 106   2]]

 [[219 123   9]
  [219 123  10]
  [219 122  12]
  ...
  [206 106   0]
  [201 103   1]
  [204 107   3]]

 ...

 [[  0 119  99]
  [  7  95  81]
  [  8 110  92]
  ...
  [ 12 177 164]
  [  2 153 144]
  [ 14 162 152]]

 [[  0 144 119]
  [  0 150 123]
  [  0 142 117]
  ...
  [ 34 192 185]
  [ 14 141 142]
  [ 18 141 137]]

 [[ 10 120 102]
  [  0 125 104]
  [  0 107  91]
  ...
  [ 17 136 138]
  [  0 107 113]
  [  0 125 122]]]
'''

注意:TypeError: merge() takes at most 2 arguments (3 given)  记得加上中括号,而不是img = cv2.merge(b, g, r),需要的是列表数据类型。

假如你想使所有像素的 红色通道值  都为0,不必拆分再赋值,可以直接使用 Numpy 索引,这会更快

img[:, :, 2] = 0

import cv2

img=cv2.imread('tree.jpg')

img[:,:,2]=0

print(img)
'''
[[[219 123   0]
  [219 123   0]
  [219 123   0]
  ...
  [205 105   0]
  [200 102   0]
  [203 106   0]]

 [[219 123   0]
  [219 123   0]
  [219 122   0]
  ...
  [205 105   0]
  [200 102   0]
  [203 106   0]]

 [[219 123   0]
  [219 123   0]
  [219 122   0]
  ...
  [206 106   0]
  [201 103   0]
  [204 107   0]]

 ...

 [[  0 119   0]
  [  7  95   0]
  [  8 110   0]
  ...
  [ 12 177   0]
  [  2 153   0]
  [ 14 162   0]]

 [[  0 144   0]
  [  0 150   0]
  [  0 142   0]
  ...
  [ 34 192   0]
  [ 14 141   0]
  [ 18 141   0]]

 [[ 10 120   0]
  [  0 125   0]
  [  0 107   0]
  ...
  [ 17 136   0]
  [  0 107   0]
  [  0 125   0]]]
'''

转载请注明转自:https://blog.csdn.net/Owen_goodman/article/details/107063971

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV(八):图像核心操作之拆分及合并图像通道 的相关文章

  • 使用 K 均值聚类 OpenCV 进行交通标志分割

    I used K Means Clustering to perform segmentation on this traffic sign as shown below 这些是我的代码 读取图像并模糊 img cv imread 000
  • OpenCV 中“IplImage”和“CvMat”的全称是什么?

    有一个IplImage and CvMat在 OpenCV 中 他们的全名是什么 IPL in IplImage代表英特尔处理库 这是Intel维护OpenCV时的残余 CV in cvMat代表计算机视觉矩阵 这是图形中常用的数据结构 I
  • 如何获得垂直线穿过的完整内轴线?

    我有一个图像 我想获取穿过其中轴的像素 我尝试使用骨架化 and 中轴方法来获取它们 但这两种方法都返回比相应对象短的一维线 这是带有示例图像的代码 gt gt gt import skimage filter gt gt gt impor
  • 如何将图像从 np.uint16 转换为 np.uint8?

    我正在创建一个图像 image np empty shape height width 1 dtype np uint16 之后我将图像转换为 BGR 模型 image cv2 cvtColor image cv2 COLOR GRAY2B
  • 从 2 个摄像头捕获(OpenCV、Python)[重复]

    这个问题在这里已经有答案了 所以我试图从 openCV 中的两个摄像头 python 和 windows 7 进行捕获 我用一台相机拍摄的效果很好 你也会注意到我正在对图像做一些时髦的事情 但这并不重要 这是尝试使用两个的代码 import
  • 将线性数组转换为二维矩阵

    我有一个浮点指针 数组 它代表一个图像 它的元素计数和索引具有宽度 高度 图像不像矩阵 其原点位于左上角 相反 它的原点位于左下角 就像在笛卡尔坐标系中一样 达到最大宽度后 它从左侧开始下一行 所以我想有效地将 这个数组转换为二维矩阵 可选
  • 对同色像素块的边界进行着色

    我有一张有 5 种不同颜色的图像 在这种情况下 随机生成 w h 40 27 img Image new RGB w h pixels img load available colors r 255 13 18 b 72 64 255 y
  • OpenCV,捕获的视频比原始相机视频运行得更快!

    我正在使用 openCV 从相机捕获视频并将其存储到 avi 文件 问题是当我完成捕获并运行 avi 文件时 视频流看起来速度很快 这是代码 void main CvCapture capture cvCaptureFromCAM 0 in
  • OpenCV:如何使用图像计算相机和物体之间的距离?

    我是 OpenCV 的新手 我正在使用以下公式来计算距离 distance to object mm focal length mm real height of the object mm image height pixels obje
  • OpenCV 机器学习算法的 CSV 格式

    OpenCV 中的机器学习算法似乎使用以 CSV 格式读取的数据 参见示例这个 cpp文件 https code ros org trac opencv browser trunk opencv samples c tree engine
  • 使用 SURF 在检测到的对象周围绘制矩形

    我正在尝试从涉及冲浪检测器的以下代码中检测对象 我不想绘制匹配项 我想在检测到的对象周围绘制一个矩形 但不知何故我无法获得正确的单应性 请任何人指出在哪里我走错了 include
  • 如何在 OpenCV 中将 Float Mat 写入文件

    我有一个矩阵 Mat B 480 640 CV 32FC1 包含浮点值 我想将此矩阵写入一个可以打开的文件Notepad https en wikipedia org wiki Windows Notepad or 微软Word https
  • 类型错误:只有长度为 1 的数组可以转换为 Python 标量

    我是 openCV 的初学者 正在尝试分析数独求解器的现有代码 有这一段代码会引发错误 samples np float32 np loadtxt feature vector pixels data responses np float3
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • OpenCV:将垫子除以标量的最简单方法是什么

    我认为标题中已经包含了很多内容 显然我可以迭代和划分 但我认为有一种内置的方法 我看见cvConvertScale但这不适用于类型cv Mat 我知道标量乘法的缩放运算 cv Mat M float alpha cv Mat Result
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • Python 2.7从非默认目录打开多个文件(对于opencv)

    我在 64 位 win7 上使用 python 2 7 并拥有 opencv 2 4 x 当我写 cv2 imread pic 时 它会在我的默认 python 路径中打开 pic 即C Users Myname 但是我如何设法浏览不同的目

随机推荐

  • VMware虚拟机怎么用U盘装win7系统

    VMware Workstation虚拟机可以在一台电脑上模拟运行多种不同的操作系统 实现与实际电脑完全一样的操作 包括读取U盘 连接网络等 很多用户想用U盘启动盘给VMware安装win7系统 但是不知道怎么操作 本文系统城小编就教大家在
  • Unity 手机触屏事件

    Unity 触屏操作 当将Unity游戏运行到IOS或Android设备上时 桌面系统的鼠标左键可以自动变为手机屏幕上的触屏操作 但如多点触屏等操作却是无法利用鼠标操作进行的 Unity的Input类中不仅包含桌面系统的各种输入功能 也包含
  • Java实现冒泡排序

    冒泡排序 基础版本 冒泡 两轮循环 外层表示第几轮冒泡 内层表示两两比较 public static void bubble int a 冒泡轮次 for int j 0 j lt a length 1 j 两两比较 for int i 0
  • 文件写入操作编程(Linux系统编程)

    write函数 man手册的相关介绍 代码实现 include
  • 苹果xsmax登录id服务器无响应,iPhone XS Max无法开机了这几招轻松解决!

    原标题 iPhone XS Max无法开机了这几招轻松解决 iPhone手机使用久了难免会出现卡顿 卡机的现象 如果设备屏幕死机 手机触摸屏不灵或者设备在开机时卡住 该怎么办 下面 整理了一些关于iPhoneXSMax手机无法开机的解决方法
  • 2021年华中杯数学建模挑战赛A题马赛克瓷砖选色问题求解全过程文档及程序

    2021年华中杯数学建模 A题 马赛克瓷砖选色问题 原题再现 马赛克瓷砖是一种尺寸较小 常见规格为边长不超过 5cm 的正方形瓷砖 便于在非平整的表面铺设 并且容易拼接组合出各种文字或图案 但是受工艺和成本的限制 瓷砖的颜色只能是有限的几种
  • Sublime Text 3常用插件及安装方法

    Sublime Text 3常用插件及安装方法 相关教程 sublime text 3 快捷键大全以及配置编译环境 安装Sublime Text 3插件的方法 直接安装 安装Sublime text 2插件很方便 可以直接下载安装包解压缩到
  • 三菱服务器显示d01,三菱井道故障显示代码是什么?

    9 井道 91F上行UL开关动作 91E下行DL开关动作91DUL DL都动作917后门RLD OFF故障 916后门RLU OFF故障 915前门RLD OFF故障 914前门RLU OFF故障913 TSD开关故障 93F UL DL都
  • %lld,%d,%hd,%hhd在打印时的“潜规则”

    先由一道经典例题引入 想必很多学习者都遇到过 第2114行的打印结果毫无疑问是1 2 3 第2115行的打印结果为1 0 2 因为一般的编译器都是小端存储模式 即数据的低位存储于内存的 低地址中 数据的高位存储于内存的高地址中 前两个 d分
  • mybatits用一个接口实现同时更新和插入的功能

    用关键字ON DUPLICATE KEY UPDATE
  • 【整理】嵌入式SoC中各种片内资源

    原文地址 http www crifan com summary embedded soc chip internal resource or functions 整理 嵌入式SoC中各种片内资源 2013 年 12 月 18 日 上午 1
  • 优达学城无人驾驶工程师——P2交通路牌识别

    这次是P2项目 交通路牌识别 用到的是简单的卷积网络 2层的卷积层加上4层全连接层 因为用的数据集的图片大小是32x32的 所以不用很复杂的神经网络 数据地址在这里 https s3 us west 1 amazonaws com udac
  • thinkphp volist遍历获取数组下标

    thinkphp volist循环遍历获取数组下标 key 直接使用 key ul volist name list id item li item li ul
  • 零基础学Linux-网络基础配置

    注 本文章集合多为大咖文章 并非个人编辑 如有侵权 请联系本人删除 借鉴复制内容均标注来源 第一章节 计算机的概念 计算机 computer 俗称电脑 是现代一种用于高速计算的电子计算机器 可以进行数值计算 又可以进行逻辑计算 还具有存储记
  • Pymongo迁移MongoDB数据库的数据

    使用pymongo的用法请参考 Python连接MongoDB 使用pymongo进行增删改查 迁移的逻辑也很简单 从源主机读取数据库 得到数据库的全部集合 循环每个集合 根据 id迁移 然后每一个 id都会保存一次 每次更换集合的时候都会
  • 写小论文心得(计算机视觉领域)

    简介 这篇博文打算讲一下我写小论文前后的过程 其中有许多地方我觉得对于新手来说还是有很多帮助的 包括我自己也是自己慢慢摸索出来的 希望能对正在准备自己第一篇论文的人有所帮助 写论文的整个过程我想分为几个阶段 1 获得idea 2 做大量实验
  • 公司内部培训的一些收获

    作者 朱金灿 来源 http blog csdn net clever101 临近年终 公司请来一位讲师来给我们作培训 题目记得是设计匠艺 说实话 我做不到像讲师那样 快讲完课时能将自己所讲的内容都有条理整理一遍 我就大致讲讲我所做笔记的一
  • 各音视频格式文件下载地址清单分享

    https samples mplayerhq hu allsamples txt https samples mplayerhq hu A codecs AC3 Broadway 5 1 48khz 448kbit ac3 00 READ
  • Gradle的使用教程

    一 相关介绍 Gradle是一个好用的构建工具 使用它的原因是 配置相关依赖代码量少 不会像maven一样xml过多 打包编译测试发布都有 而且使用起来方便 利用自定义的任务可以完成自己想要的功能 二 安装 下载地址http service
  • OpenCV(八):图像核心操作之拆分及合并图像通道

    摘要 有时候我们需要对 BGR 三个通道分别进行操作 就是需要你把BGR 拆分成单个通道 B G R 这叫做拆分 有时候又需要把独立通道的图片合并成一个 BGR 图像 这叫做合并 拆分代码 import cv2 import numpy a