OpenCV学习(四)——轨迹栏(调色板与不同通道图像)

轨迹栏

    • 4. OpenCV轨迹栏
      • 4.1 轨迹栏作为调色板
      • 4.2 轨迹栏显示不同通道图像

4. OpenCV轨迹栏

会用到以下主要两个函数

cv2.createTrackbar(trackbarName, windowName, value, count, onChange)创建轨迹栏

主要参数:

  • trackbarName:轨迹栏名称
  • windowName:附加到的窗口名称
  • value:默认值
  • count:最大值
  • onChange:执行的回调函数每次跟踪栏值更改,下面例子函数什么都不做

getTrackbarPos(trackbarname, winname)获取轨迹栏的位置

  • trackbarname:轨迹栏名称
  • winname:附加到的窗口名称

4.1 轨迹栏作为调色板

创建一个黑色图像,通过轨迹栏改变BGR三通道值来显示不同颜色

import numpy as np
import cv2def nothing(x):pass# 创建一个黑色的图像,一个窗口
img = np.zeros((512, 512, 3), np.uint8)
cv2.namedWindow('image')
# 创建颜色变化的轨迹栏
cv2.createTrackbar('R', 'image', 0, 255, nothing)
cv2.createTrackbar('G', 'image', 0, 255, nothing)
cv2.createTrackbar('B', 'image', 0, 255, nothing)
# 为 ON/OFF 功能创建开关
switch = '0 : OFF \n1 : ON'
cv2.createTrackbar(switch, 'image', 0, 1, nothing)
while (1):cv2.imshow('image', img)k = cv2.waitKey(1) & 0xFFif k == 27:break# 得到四条轨迹的当前位置r = cv2.getTrackbarPos('R', 'image')g = cv2.getTrackbarPos('G', 'image')b = cv2.getTrackbarPos('B', 'image')s = cv2.getTrackbarPos(switch, 'image')if s == 0:img[:] = 0else:img[:] = [b, g, r]
cv2.destroyAllWindows()

请添加图片描述

4.2 轨迹栏显示不同通道图像

OpenCV读取的是BGR形式,通过轨迹栏可以显示不同通道的图像,例如:只有R单通道的图像、将两通道合并的图像、将三通道合并为原图像。

  • split(): 通道分离,(b, g, r)形式
  • merge() :通道合并,输入1通道或者3通道
import numpy as np
import cv2def nothing(x):pass# 将选择的通道设置为零矩阵,不显示
def zeros_channels(channel):zeros = np.zeros_like(channel)return zerosimg = cv2.imread('lena.jpg')
# 将3通道分离
b, g, r = cv2.split(img)
cv2.namedWindow('image')
# 创建三通道开关的轨迹栏
switch_r = 'R_channel'
cv2.createTrackbar(switch_r, 'image', 0, 1, nothing)
switch_g = 'G_channel'
cv2.createTrackbar(switch_g, 'image', 0, 1, nothing)
switch_b = 'B_channel'
cv2.createTrackbar(switch_b, 'image', 0, 1, nothing)while (1):cv2.imshow('image', img)k = cv2.waitKey(1) & 0xFFif k == 27:break# 得到三条轨迹的当前位置s_r = cv2.getTrackbarPos(switch_r, 'image')s_g = cv2.getTrackbarPos(switch_g, 'image')s_b = cv2.getTrackbarPos(switch_b, 'image')if s_r == 1:if s_g == 1:if s_b == 1:img = cv2.merge([b, g, r])  # 对通道按照BGR的顺序合并生成图像bgrelse:img = cv2.merge([zeros_channels(b), g, r]) # 不显示b通道else:if s_b == 1:img = cv2.merge([b, zeros_channels(g), r])  # 对通道按照BGR的顺序合并生成图像bgrelse:img = cv2.merge([zeros_channels(b), zeros_channels(g), r]) # 不显示b, g通道else:if s_g == 1:if s_b == 1:img = cv2.merge([b, g, zeros_channels(r)])  # 对通道按照BGR的顺序合并生成图像bgrelse:img = cv2.merge([zeros_channels(b), g, zeros_channels(r)]) # 不显示b, r通道else:if s_b == 1:img = cv2.merge([b, zeros_channels(g), zeros_channels(r)])  # 对通道按照BGR的顺序合并生成图像bgrelse:img = cv2.merge([zeros_channels(b), zeros_channels(g), zeros_channels(r)]) # 不显示b, g, r通道cv2.destroyAllWindows()

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/172182.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

感受webWorker

B站视频 git完整代码 之前遇到的场景 1、vxe表格计算1000多条数极值/算数平方根的时候。 2、大文件上传时计算hashCode时候 一、不使用webWorker 目录结构 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&q…

数组与链表算法-矩阵算法

目录 数组与链表算法-矩阵算法 矩阵相加 C代码 矩阵相乘 C代码 转置矩阵 C代码 稀疏矩阵 C代码 数组与链表算法-矩阵算法 矩阵相加 矩阵的相加运算较为简单&#xff0c;前提是相加的两个矩阵对应的行数与列数必须相等&#xff0c;而相加后矩阵的行数与列数也是相同的。…

鼎鑫鸿鄴引入“能源互联网+”理念 打造共赢

近年来&#xff0c;随着全球能源消耗的不断增长和环境问题的日益突出&#xff0c;清洁能源转型成为全球共同关注的话题。中国作为全球最大的能源消费国&#xff0c;也在积极推动能源结构的优化和清洁能源的发展。鼎鑫鸿鄴新能源科技有限公司在推动清洁能源转型方面制定了一系列…

Linux内核代码中常用的数据结构

Linux内核代码中广泛使用了数据结构和算法&#xff0c;其中最常用的两个是链表和红黑树。 链表 Linux内核代码大量使用了链表这种数据结构。链表是在解决数组不能动态扩展这个缺陷而产生的一种数据结构。链表所包含的元素可以动态创建并插入和删除。 链表的每个元素都是离散…

el-table添加固定高度height后高度自适应

0 效果 1 添加自定义指令 新建目录src/directive/el-table 在el-table目录下新建文件adaptive.js import { addResizeListener, removeResizeListener } from element-ui/src/utils/resize-event// 设置表格高度const doResize async(el, binding, vnode) > {// 获取表格…

S32K144芯片焊接完成后使用S32DS初次下载无法下载解决方法

一、问题现象如下&#xff0c;S32DS Debug下报错 二、原因&#xff0c;原厂芯片出厂时的FLASH Memory的安全机制是激活的&#xff0c;仿真器是可以连上&#xff0c;但是没法读取Flash Memory的内容 三、解决方法 参考图示&#xff0c;解锁后即可正常Debug

深入理解Java中的转义字符

最近在学习《两周自制脚本语言》这本书&#xff0c;在词法分析的一些复杂的正则中用到了大量的转义字符’\&#xff0c;比如正则字符串中包含了这个部分\\\\\"你知道它是匹配什么的么&#xff1f; 反斜杠在字符串和正则表达式中都有特殊作用。今天让我们来深入理解一下Ja…

数据分享 I 地级市人口和土地使用面积基本情况

数据地址&#xff1a; 地级市人口和土地使用面积基本情况https://www.xcitybox.com/datamarketview/#/Productpage?id394 基本信息. 数据名称: 地级市人口和土地使用面积基本情况 数据格式: ShpExcel 数据时间: 2021年 数据几何类型: 面 数据坐标系: WGS84坐标系 数据…

【计算机毕设经典案例】基于微信小程序的图书管理系统

前言&#xff1a;我是IT源码社&#xff0c;从事计算机开发行业数年&#xff0c;专注Java领域&#xff0c;专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 &#x1f449;IT源码社-SpringBoot优质案例推荐&#x1f448; &#x1f449;IT源码社-小程序优质案例…

『力扣刷题本』:移除链表元素

一、题目 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5]示例 2&#xff1a; 输入&a…

在spring boot+vue项目中@CrossOrigin 配置了允许跨域但是依然报错跨域,解决跨域请求的一次残酷经历

首先&#xff0c;说一下我们的项目情况&#xff0c;我们项目中后端有一个过滤器&#xff0c;如果必须要登录的接口路径会被拦下来检查&#xff0c;前端要传一个token&#xff0c;然后后端根据这个token来判断redis中这个用户是否已经登录。 if (request.getMethod().equals(&qu…

css 三栏布局的实现?

目录 前言 用法 代码 理解 高质量图片 1. 左侧栏 - 导航菜单 2. 中间栏 - 主要内容 3. 右侧栏 - 小部件和广告 布局的响应式设计 三栏布局在前端页面设计中是一个常见的布局方式&#xff0c;通常包含左侧、中间和右侧三个部分。这种布局方式在多种场景中都很受欢迎&am…

解决Windows出现找不到mfcm90u.dll无法打开软件程序的方法

今天&#xff0c;我非常荣幸能够在这里与大家分享关于mfc90u.dll丢失的5种解决方法。在我们日常使用电脑的过程中&#xff0c;可能会遇到一些软件或系统错误&#xff0c;其中之一就是mfc90u.dll丢失。那么&#xff0c;mfc90u.dll究竟是什么文件呢&#xff1f;接下来&#xff0c…

【表面缺陷检测】钢轨表面缺陷检测数据集介绍(2类,含xml标签文件)

一、介绍 钢轨表面缺陷检测是指通过使用各种技术手段和设备&#xff0c;对钢轨表面进行检查和测量&#xff0c;以确定是否存在裂纹、掉块、剥离、锈蚀等缺陷的过程。这些缺陷可能会对铁路运输的安全和稳定性产生影响&#xff0c;因此及时进行检测和修复非常重要。钢轨表面缺陷…

spring boot利用redis作为缓存

一、缓存介绍 在 Spring Boot 中&#xff0c;可以使用 Spring Cache abstraction 来实现缓存功能。Spring Cache abstraction 是 Spring 框架提供的一个抽象层&#xff0c;它对底层缓存实现&#xff08;如 Redis、Ehcache、Caffeine 等&#xff09;进行了封装&#xff0c;使得在…

微服务-Feign

文章目录 Feign介绍Feign的基本使用自定义Feign的配置Feign性能优化Feign最佳实践 Feign介绍 RestTemplate远程调用存在的问题&#xff1a;代码可读性差&#xff0c;java代码中夹杂url&#xff1b;参数复杂很难维护 String url "http://userservice/user/" order.g…

有一个带头结点的单链表L,设计一个算法使其元素递增有序

有一个带头结点的单链表L&#xff0c;设计一个算法使其元素递增有序 代码思路&#xff1a; 我这里懒得搞那个指针了&#xff0c;直接遍历一遍链表&#xff0c;把链表的元素复制到数组arr里面 对数组A进行一下排序&#xff0c;排完之后再把元素复制到L里面。 至于排序你用啥算…

1820_ChibiOS中的同步消息

全部学习汇总&#xff1a; GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 1. 看到这里提到的这个模型&#xff0c;我在想是不是我一直没有搞定的多核可以利用这个机制来解决。如果是多核&#xff0c;ChibiOS的这种机制是否依…

【java学习—十】捕获异常(2)

文章目录 1. 什么是异常2. 异常处理机制3. 捕获异常总结3.1. try 和 catch3.2. 捕获异常的有关信息&#xff1a;3.3. finally 1. 什么是异常 如果程序运行时&#xff0c;某一行出现异常&#xff0c;将会使程序中断&#xff0c;不在继续执行&#xff0c;举个例子如下&#xff1…

二进制部署kubernetes集群的推荐方式

软件版本&#xff1a; 软件版本containerdv1.6.5etcdv3.5.0kubernetesv1.24.0 一、系统环境 1.1 环境准备 角色IP服务k8s-master01192.168.10.10etcd、containerd、kube-apiserver、kube-scheduler、kube-controller-manager、kubele、kube-proxyk8s-node01后续etcd、conta…