如何让OpenCv显示两个颜色通道组合的图像?

2023-12-07

使用 OpenCV 从图像中获取一个颜色通道的输出并不困难,而且可以轻松完成。

但是否有可能从图像的三种主要 BGR 颜色中,我想直接使用函数看到仅绿色和红色组合而不是蓝色的图像?

因此,我可以通过将所有蓝色值设置为 0 来执行上述操作,然后查看图像,其代码如下:

    import cv2
    import numpy as np

    gr = cv2.imread('imagetowork2.jpg')
    gr[:, :, 0] = 0

    cv2.namedWindow("random_image",cv2.WINDOW_NORMAL)
    cv2.resizeWindow("random_image",590,332)
    cv2.imshow("random_image",gr)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

我不得不求助于上面的代码,因为,使用这个gr[:, :, 1:3]没用。我不明白为什么 cv2 函数适用于整个 3 维值而不适用于二维?

如果他们尝试使用以下命令显示图像,就会出现这个错误gr[:, :, 1:3]:

error: OpenCV(3.4.5) C:\projects\opencv-python\opencv\modules\imgcodecs\src\utils.cpp:622: error: (-15:Bad number of channels) Source image must have 1, 3 or 4 channels in function 'cvConvertImage'

所以我直接和主要的问题是,是否有一个内置函数可以直接在 OpenCV 或任何其他库中执行此操作,或者将整个颜色值设置为 0 是执行此操作的唯一方法?

So this is the image I am working on(can use any kind of image actually): enter image description here

And this is the output of what I performed(which I want to get using some in-built function and not setting some values to 0): enter image description here

这是可能吗?


我想你可以做的一件事就是分别保留频道并组合你想要观看的内容:

#!/usr/local/bin/python3

import numpy as np
import cv2

im    = cv2.imread('sd71Z.jpg')
b,g,r = cv2.split(im)
zeros = np.zeros_like(b)

cv2.imshow("Zero blue",  cv2.merge([zeros,g,r]))
cv2.imshow("Zero green", cv2.merge([b,zeros,r]))
cv2.imshow('Zero red',   cv2.merge([b,g,zeros]))
cv2.waitKey()

enter image description here

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

如何让OpenCv显示两个颜色通道组合的图像? 的相关文章

随机推荐

  • 动态分配表变量?

    用 Lua 编写一个函数 创建两个表 我希望将表分配给添加 x 的值名称 以及添加 y 的值名称 例如 如果名称是 line 它将创建两个表 linex 和 liney 但我不知道该怎么做 以下显然不起作用 仅用于显示目的 但我将如何做到这
  • jQuery 和 setTimeout

    我有以下代码 jQuery document ready function setTimeout loading fadeIn slow 9999 它应该在 9999 毫秒后慢慢淡入加载元素 但它却立即淡入 为什么 任何人都可以帮忙 谢谢
  • 如何在 Eclipse 中编写 JavaScript

    我正在使用 eclipse 进行 java 编码 我可以在 Eclipse 中使用 JavaScript 吗 如果有 如何使用 请给出想法 我用的是优秀的阿普塔纳工作室 日食插件
  • python TypeError 并非所有参数在字符串格式化期间都被转换[重复]

    这个问题在这里已经有答案了 该程序的目的是通过检查该数字是否可以除以 2 而没有余数来查找字符串中的奇数 代码如下 def iq test numbers for x in numbers split if x 2 0 return x i
  • 将计算保存在代码或数据库中?

    我正在建立一个系统来进行各种计算原始数据 并根据计算提供输出 我的主要问题是更多建议而不是操作方法 使用MySQL数据库 以及php来访问 目前需要完成约 200 种不同的计算 但这些计算分为 4 种计算类型 ie one 计算类型是x除以
  • Rails - 具有定制框架的多租户应用程序

    我正在组织一个具有单个代码库 应用程序的多租户应用程序 使用子域来检测租户 然后在 postgres 上运行 SET SCHEMA 来完成有趣的事情 我的问题是 某些客户需要对主代码库进行不同级别的定制 虽然不是很多 但肯定足以让我不想通过
  • 使用 Rails 4 添加字段以设计注册

    首先 我对 Rails 还很陌生 所以我仍在掌握窍门 我正在尝试向 Devise 注册页面添加两个字段 名字字段和姓氏字段 为了尝试这个 我已经改变了视图和控制器 它们看起来像这样 控制器 class ApplicationControll
  • MIPS 组件,lui 0x1001

    我有一个作业 其中我必须解释有关以下 MIPS 汇编代码的一些内容 data x word 4711 y word 10 z word 0x0A91 e word 0 text globl main main lw 2 x lw 3 y l
  • 通过窗口名称访问窗口

    如果我使用打开一个窗口 window open myurl html windowname width 100 height 100 如何使用 窗口名称 引用新窗口 从打开它的同一页面 这个问题就是专门针对这个问题的 我知道我可以使用 va
  • 网络关闭时本地存储的上游数据不会在 JB 和 ICS 上的网络上发送(它们正在重新启动)

    这是我的场景 当网络中断时 GCM 客户端将设备到云的消息 上游 本地存储在本地队列中 其长度似乎为 20 尽管从未说明 当此队列已满时 消息将被本地丢弃 并且意图包含消息类型MESSAGE TYPE SEND ERROR 关于删除哪个 m
  • Sequelize 中的复数形式如何工作?

    使用时续集和阅读Sequelize 文档 我观察到有时型号名称使用单数 有时使用复数 有些通过关联自动添加到模型的方法具有单数形式 有些具有复数形式 1 Sequelize 如何计算复数 它只是在字符串后面附加一个 s 吗 2 如果我想使用
  • 使用 Google Caja 运行用户提供的 Javascript

    看来官方例子 use a caja js仅包含一个文件iframe从托管 caja 编译服务的服务器加载 URL 该服务又从某个 URL 获取输入 相关 API 可用here 然而 我真正想要的是安全地 并且重复地 运行用户提供的 Java
  • 如何实现 &Struct 的默认值?

    在多次阅读 Rust 书之后 我想我开始了解生命周期的要点 但对我来说 另一个问题是我们需要用来声明它们的语法 我发现这确实违反直觉 我将我的一段愚蠢的代码简化为这对结构 其中一个引用另一个 derive Debug Default pub
  • RemoteWebDriver 和 Grid - 是否可以获取服务器 IP?

    我使用 Selenium 2 和 Grid 中的 RemoteWebDriver 将测试划分到多个虚拟机上 假设我有两台 Linux 机器 在测试中我指定了在 Linux 机器上运行的功能 但我无法弄清楚正在使用这两台机器中的哪一台 有什么
  • SapUI5-平铺容器不工作

    由于某种原因 tilecontainer 无法工作 如果我放置一个列表而不是 Tiles 它工作正常 我正在尝试构建一个包含图块的简单应用程序 我是 SAPUI5 的新手 这是XML的代码
  • 如何从其父视图中删除带有圆角的 UIView?

    我正在为 3 2 及更高版本创建 iPad 应用程序 我的应用程序有一个覆盖视图 它具有半透明效果 使其下方的所有内容都变暗 在这个视图的中间 我在这个半透明的地方切了一个洞 让部分背景过滤器毫发无伤地通过 代码如下 void drawRe
  • 显示ArrayList的表

    我有一个main java有一个按钮 当您按下它时 它会调用一个方法并返回一个节点的 ArrayList 我想在表中显示 ArrayList Node 类中描述的 5 个字段 如何做到这一点 问题是显示一些列表类型的字段 Node java
  • Mercurial:检测到合并冲突时不会出现编辑器

    我想知道这里有人有在Ubuntu上运行mercurial的经验吗 我整个早上都在玩它 喜欢迄今为止所看到的一切 我遇到的一个问题是 当我进行合并并检测到冲突时 它不会自动在命令行编辑器中显示该文件以允许我解决冲突 它只是告诉我存在冲突 然后
  • 在 Spring 5 JPA findOne() 中获取 `Long 无法转换为 Example`

    我得到一个argument mismatch Long cannot be converted to Example
  • 如何让OpenCv显示两个颜色通道组合的图像?

    使用 OpenCV 从图像中获取一个颜色通道的输出并不困难 而且可以轻松完成 但是否有可能从图像的三种主要 BGR 颜色中 我想直接使用函数看到仅绿色和红色组合而不是蓝色的图像 因此 我可以通过将所有蓝色值设置为 0 来执行上述操作 然后查