OpenCV-Python学习(8)—— OpenCV 颜色表操作

news/2024/5/2 6:36:46/文章来源:https://blog.csdn.net/m0_38082783/article/details/127284681

1. 知识点

  1. 学习查找表 cv.LUT()【look up table】;
  2. 颜色查找表;
  3. 函数 cv.applyColorMap() 的使用。

2. cv.LUT() 函数说明

2.1 函数使用

cv.LUT(src, lut, dst)

2.2 参数说明

参数说明
src表示原始图像。
lut表示查找表的地址,对于多通道图像的查找,它可以有一个通道,也可以与原始图像有相同的通道。
dst表示输出图像。

2.3 查找表的使用和优点

  1. 构建查找表;
  2. 查找表应用;

查找表优势,预计算,空间换时间,避免重复计算,节约计算时间。

3. cv.applyColorMap() 函数说明

3.1 函数使用

cv.applyColorMap(src, colormap[,dst])

3.2 参数说明

参数说明
src表示输入图像。
colormap表示颜色表。
dst表示输出图像。

3.3 系统查找表 colormap 说明

colormap为颜色图模式,可以传入整数0~21对应各种不同的颜色图,或者用cv2.COLORMAP_AUTUMN(等价于0)、cv2.COLORMAP_BONE(等价于1)等方式传入,OpenCV源码头文件中定义的22种模式如下:

ColormapTypes = ('COLORMAP_AUTUMN', # 0'COLORMAP_BONE', # 1'COLORMAP_JET', # 2'COLORMAP_WINTER', # 3'COLORMAP_RAINBOW', # 4'COLORMAP_OCEAN', # 5'COLORMAP_SUMMER', # 6'COLORMAP_SPRING', # 7'COLORMAP_COOL', # 8'COLORMAP_HSV', # 9'COLORMAP_PINK', # 10'COLORMAP_HOT', # 11'COLORMAP_PARULA', # 12'COLORMAP_MAGMA', # 13'COLORMAP_INFERNO', # 14'COLORMAP_PLASMA', # 15'COLORMAP_VIRIDIS', # 16'COLORMAP_CIVIDIS', # 17'COLORMAP_TWILIGHT', # 18'COLORMAP_TWILIGHT_SHIFTED', # 19'COLORMAP_TURBO', # 20'COLORMAP_DEEPGREEN' # 21
)

各种ColormapTypes对应的色彩是下图这样的,有各种春夏秋冬四季风格、冷热风格等等:

在这里插入图片描述

4. 系统查找表实例

  1. 使用系统查找表实现图片的幻灯片切换;
  2. 间隔时间1s切换一次。

4.1 实现代码

  1. 定义系统查找表的type常量列表 ColormapTypes;
  2. 使用 cv.imread() 读取图片;
  3. 定义一个切换的变量 index = 0;
  4. 循环判断,只要 index 没有大于等于 ColormapTypes 的长度,按照 index 对应的模式显示图片;
  5. 1000ms 后操作 index = index + 1;
  6. 跳出循环后,销毁窗口。
import cv2 as cvColormapTypes = ('COLORMAP_AUTUMN', # 0'COLORMAP_BONE', # 1'COLORMAP_JET', # 2'COLORMAP_WINTER', # 3'COLORMAP_RAINBOW', # 4'COLORMAP_OCEAN', # 5'COLORMAP_SUMMER', # 6'COLORMAP_SPRING', # 7'COLORMAP_COOL', # 8'COLORMAP_HSV', # 9'COLORMAP_PINK', # 10'COLORMAP_HOT', # 11'COLORMAP_PARULA', # 12'COLORMAP_MAGMA', # 13'COLORMAP_INFERNO', # 14'COLORMAP_PLASMA', # 15'COLORMAP_VIRIDIS', # 16'COLORMAP_CIVIDIS', # 17'COLORMAP_TWILIGHT', # 18'COLORMAP_TWILIGHT_SHIFTED', # 19'COLORMAP_TURBO', # 20'COLORMAP_DEEPGREEN' # 21
)def use_system_lut_demo():img = cv.imread('./images/butterfly.jpg')index = 0while True:if index >= len(ColormapTypes):breakdst = cv.applyColorMap(img, index)cv.imshow('system_lut_window', dst)cv.waitKey(1000)index = index + 1cv.destroyAllWindows()if __name__ == "__main__":use_system_lut_demo()

4.2 实现效果

在这里插入图片描述

5. 自定义查找表

  1. 自定义一个取反查找表;
  2. 使用取反查找表读取图片显示;

5.1 代码

  1. 使用 cv.imread() 读取图片;
  2. 使用 np.zeros((256,1,3), dtype=np.uint8) 全部是0的查找表;
  3. 循环给查找表赋值,颜色取反;
  4. 使用自定义查找表;
  5. 显示取反后的图片。
import cv2 as cv
import numpy as npdef use_custom_lut_demo():img = cv.imread('./images/butterfly.jpg')lut3 = np.zeros((256,1,3), dtype=np.uint8)for i in range(256):lut3[i,0] = 255 - idst = cv.LUT(img, lut3)cv.imshow('custom_lut_window', dst)cv.waitKey(0)cv.destroyAllWindows()if __name__ == "__main__":use_custom_lut_demo()

5.2 结果

在这里插入图片描述

6. 总结

  1. 虽然手动遍历可以达到同样效果,但尽量使用 OpenCV 内置函数。调用LUT 函数可以获得最快的速度,这是因为OpenCV库可以通过英特尔线程架构启用多线程;
  2. 学会 cv.LUT() 的使用,cv.LUT() 自定义查找表的时候使用的函数;
  3. 学会 cv.applyColorMap() 的使用,**cv.applyColorMap()**使用系统查找表的时候使用的函数。

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

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

相关文章

mybatis-plus 代码生成工具报错:java.lang.NoSuchFieldError: GAUSS

目录 一、背景 二、问题 三、解决方案 1、网上的答案: 2、自己的方案: 四、总结: 一、背景 框架:springboot2.2.4.RELEASE、mybatis-plus3.3.1版本 二、问题 使用mybatis-plus已集成的自动生成代码框架生成代码 我当时查…

kubernets集群升级

1、环境介绍 操作系统:centos 7.9 kubernetes版本:v1.23 kubelet kubeadm kubectl版本:1.23.4 containerd版本:1.4.13 升级版本:v1.24.6–>v1.25.2 注意:使用kubeadm config升级失败,随改成逐级升级 网络…

系统分析师 - 纲要章节汇总

个人总结,仅供参考,欢迎加好友一起讨论 上午题 - 综合知识 章节考察内容分值计算机组成与体系结构 CISC、局部性原理、流水线、多级存储(Cache,内存,磁盘)、校验码、Flynn多处理机5 - 6操作系统PV操作与前趋图、虚拟存储、位示图…

C++类和对象(三)

文章目录前言1. 再谈构造函数🍑 构造函数体赋值🍑 初始化列表🍑 特性🍅 特性一🍅 特性二🍅 特性三🍅 特性四🍑 explicit 关键字2. static成员🍑 概念🍑 特性&…

推荐有礼 | 京东云推荐返利活动说明

京东云云推客是京东云推出的服务于代理商群体的交易服务平台。为代理商提供可代理产品、分销获客工具、渠道管理工具、对账结算工具等,赋能代理商数字化升级,实现降本增效。京东云云推客是京东云推出的服务于代理商群体的交易服务平台。为代理商提供可代理产品、分销获客工具…

java学习第18步——Docker镜像

Docker管理镜像的一个工具软件1 简介(3个小时搞定)1.1 Docker介绍1.2 解决2个问题(开发时依赖的包版本不一致,软件不一致)2 Docker和虚拟机3 Docker镜像和容器(镜像就是1个压缩文件,Docker软件可以来操作它&#xff0c…

API接口名称(item_search - 按关键字搜索淘宝商品)[item_search,item_get,item_search_shop等]

请求参数:q女装&start_price0&end_price0&page1&cat0&discount_only&sort&page_size&seller_info&nick&ppath&imgid&filter 参数说明:q:搜索关键字 cat:分类ID start_price:开始价格 end_price:结束价…

DOM03(达)

文章目录DOM03复习DOM作业创建元素实时生成列表表格生成文档片段事件监听器事件冒泡机制冒泡机制的应用阻止默认事件事件中的坐标值BOM页面跳转历史操作刷新界面浏览器信息读取总结DOM03 复习 双标签内容的读取 innerText: 读取页面上可见的文本innerHTML: 读取所有的HTML代码…

异常与异常捕获

异常与异常捕获 异常 异常以及异常类型 异常就是代码运行报错,行业俗语叫bug。 代码运行中一旦遇到异常会直接结束整个程序的运行,我们在编写代码的过程中药尽可能避免。 代码报错有两种:语法错误 语法错误是明眼人一眼能够看出来的,语法这是程序员的基础技能,不容有错逻辑…

【C语言】程序环境深度剖析

前言: 作者简介:爱吃大白菜1132 人生格言:纸上得来终觉浅,绝知此事要躬行 如果文章知识点有错误的地方不吝赐教,和大家一起学习,一起进步! 如果觉得博主文章还不错的话,希望三连支持&#xff01…

Day04_vue组件_组件通信_todo案例

Day04_vue组件_组件通信_todo案例 文章目录Day04_vue组件_组件通信_todo案例知识点自测今日学习目标1. vue组件1.0_为什么用组件1.1_vue组件_概念1.2_vue组件_基础使用全局 - 注册使用局部 - 注册使用1.3_vue组件-scoped作用2. vue组件通信2.0_vue组件通信_父向子-props2.1_vue…

流式思想概述和获取流

当需要对多个元素进行操作(特别是多步操作)的时候,考虑到性能及便利性,我们应该首先拼好一个"模型"步骤方案,然后再按照方案去执行它。这张图中展示了过滤、映射、跳过、计数等多步操作,这是一种集合元素的处理方案,而方案就是一种"函数模型”。图中的每…

公司招人:34岁以上两年一跳的不要,开出工资以为看错了

导读:对于公司来说,肯定是希望花最少的钱招到最优秀的员工,但事实上这个想法是不太现实的,虽然如今互联网不太好找工作,但要员工降薪去入职,相信还是有很大难度的,很多人宁可在家休息&#xff0…

差分约束及应用

差分约束用来解决两类问题 【1】 求一组不等式的可行解 【2】求最大值/最小值 不等式的可行解 对于绝对关系,需要建一个超级源点0,从零向该点连一条权值为c的边。 求解不等式解的步骤为: 【1】将每个不等式转为一条边 【2】寻找一个源点…

直流高压试验器-产品介绍-厂家-赫兹电力

赫兹电力是一家主要为电力系统的发电、供电、用电部门、科研机构与电力设备生产的相关企业提供高压试验检测设备仪器仪表的公司。 由赫兹电力为大家介绍ZGF直流高压试验器 武汉赫兹电力是直流高压发生器厂家,生产的ZGF系列直流高压发生器(简称&#xff1…

若依Vue入门——项目运行篇

文章目录相关地址开发环境什么是脚手架**运行过程**01.Git检出/下载RuoyiGit检出下载压缩包02. 目录结构03.项目运行过程后端(1)导入数据库(2) 修改配置文件(3) 运行问题1:Redis服务未启动问题2:文件编码问题运行成功修改端口前端(1) 打开前端项目(2)npm…

ULID规范解读与实现原理

前提最近发现各个频道推荐了很多ULID相关文章,这里对ULID的规范文件进行解读,并且基于Java语言自行实现ULID,通过此实现过程展示ULID的底层原理。ULID出现的背景ULID logoULID全称是Universally Unique Lexicographically Sortable Identifie…

从零使用TensorFlow搭建CNN(卷积)神经网络

🍅 写在前面 👨‍🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。 🔎个人主页:主页链接(欢迎各位大佬光临指导) ⭐️近…

BCN系列产品知识梳理:endo BCN-OH|endo BCN-甲醇,BCN-OH(endo)

●中文名:(1R,8S,9S)-双环[6.1.0]壬-4-炔-9-基甲醇,endo BCN-甲醇 ●英文:endo BCN-OH, BCN-OH(endo) ●外观以及性质:白色固体,取决于分子量,endo-BCN 的醇用于无铜点击…

MySQL的一些操作(用的并不是SQL语句,可视化界面)

可视化界面的一些基本操作 mysql workbench入门记(一)-介绍及简单使用_chunjunluo的博客-CSDN博客_mysql workbench介绍 下面这个更详细一点MySQL-Workbench数据库基本操作_努力者Mr李的博客-CSDN博客_mysql workbench怎么连接数据库 Mysql workbench 字段类型 PK => prim…